Russian Qt Forum
Декабрь 10, 2018, 19:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Диалоги :)  (Прочитано 1410 раз)
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2494

чтоб работа волком не казалась :)


Просмотр профиля WWW
« : Июнь 06, 2018, 13:16 »

Всем привет,

наверное, тривиальный вопрос, но с точки зрения UX не нахожу пока "правильного" решения, прошу совета)

Итак, у нас есть модальное окошко-диалог, в котором имеется список с объектами и кнопки для их обработки.
Юзер нажимает на кнопку и запускает (относительно) долгий процесс обсчета объектов.
При этом поверх диалога показывается QProgressDialog с кнопкой отмены.

В принципе, всё хорошо, но процесс-обработчик может быть интерактивным - то есть он может иногда запросить от юзера подтвержения действий над очередным объектом. Проблема в том, что если QProgressDialog вызвать с флагом StayOnTopHint, то
диалог подтвержения действий оказывается "под" QProgressDialog и юзер не может с ним толком работать. Если же StayOnTopHint не применять, то QProgressDialog уйдёт под основной диалог, как только появится окошко с действиями.

Как то это кривенько, в общем. Было несколько идей - сместить QProgressDialog вверх или вниз, чтоб он не перекрывал окно с выбором, либо каждый раз делать для него raise(). Но как то все равно костыльно... может, дадите хороший совет какой? Улыбающийся
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

http://sintegrial.com - всякий хороший Qt софт (был Грустный )
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5685


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Июнь 06, 2018, 13:35 »

А заюзать вместо QProgressDialog QProgressBar с кнопкой?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2494

чтоб работа волком не казалась :)


Просмотр профиля WWW
« Ответ #2 : Июнь 06, 2018, 13:43 »

А заюзать вместо QProgressDialog QProgressBar с кнопкой?

ммм.. а что это изменит? будет самописный диалог, но как это решит проблему перекрытия других окон?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

http://sintegrial.com - всякий хороший Qt софт (был Грустный )
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4038



Просмотр профиля WWW
« Ответ #3 : Июнь 06, 2018, 14:04 »

может засунуть прогрессбар прямо в диалог? или там показывать % выполнения в заголовке диалога...
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2699


Просмотр профиля
« Ответ #4 : Июнь 06, 2018, 14:34 »

Кажется, что-то намутили с парентами, на маке я делал несколько вложенных модальных диалогов, по типу такого

https://apple.insidercdn.com/gallery/24576-32330-removedrives-2-xl.jpg
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5685


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Июнь 06, 2018, 14:44 »

А заюзать вместо QProgressDialog QProgressBar с кнопкой?

ммм.. а что это изменит? будет самописный диалог, но как это решит проблему перекрытия других окон?
В смописном диалоге сможешь отображать прогресс и запрашивать у пользователя реакцию.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2494

чтоб работа волком не казалась :)


Просмотр профиля WWW
« Ответ #6 : Июнь 06, 2018, 14:50 »

Кажется, что-то намутили с парентами, на маке я делал несколько вложенных модальных диалогов, по типу такого

https://apple.insidercdn.com/gallery/24576-32330-removedrives-2-xl.jpg

Парентов у этих диалогов нет вообще (потому что они друг о друге не знают архитектурно).
В любом случае, бутерброд из 3+ диалогов нехорошо смотрится с т.з. дизайна.

может засунуть прогрессбар прямо в диалог? или там показывать % выполнения в заголовке диалога...

Ну для этого "основной" диалог ломать придется, а это не только одно место - есть еще парочка подобных.

Вот есть идея сделать "мета-диалог", в который все "дети" могут кидать свою инфу, при необходимости кнопки показывать и пр. Но будет ли это практичным - хз..
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

http://sintegrial.com - всякий хороший Qt софт (был Грустный )
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2699


Просмотр профиля
« Ответ #7 : Июнь 06, 2018, 14:55 »



Парентов у этих диалогов нет вообще (потому что они друг о друге не знают архитектурно).

Ну вот вам и ответ на вашу проблему:)

В целом, ничего плохо в 2х диалогах поверх виджета (итого 3 виджета), нет. Выше уже да, проблемы дизайна. Кажется, тогда лучше на визард передедать.
Энивей, если у вас диалог живет пока живет другой диалог, они должны быть состаканы через парента.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2494

чтоб работа волком не казалась :)


Просмотр профиля WWW
« Ответ #8 : Июнь 06, 2018, 16:07 »

Энивей, если у вас диалог живет пока живет другой диалог, они должны быть состаканы через парента.

Эти диалоги друг о друге вообще ничего не знают - даже живут в разных модулях.
Наверное все таки вариант с raise() может быть оправдан...
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

http://sintegrial.com - всякий хороший Qt софт (был Грустный )
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 10270


Просмотр профиля
« Ответ #9 : Июнь 06, 2018, 16:21 »

В любом случае, бутерброд из 3+ диалогов нехорошо смотрится с т.з. дизайна.
Вернее из 2 модальных. Да, плохо, не годится, модальный диалог должен быть только 1, на то он и модальный.

Да, отображать прогресс в самом (первом) модальном диалоге - очевидно лучше всего, но это не всегда просто сделать. Более дешевый вариант - скрывать первый, ну конечно выждать (может операция короткая), а после завершения операции опять показать. Небогато но приемлемо
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2699


Просмотр профиля
« Ответ #10 : Июнь 06, 2018, 16:33 »

В любом случае, бутерброд из 3+ диалогов нехорошо смотрится с т.з. дизайна.
Вернее из 2 модальных. Да, плохо, не годится, модальный диалог должен быть только 1, на то он и модальный.

Хмммм, Widget->File->Save As->раз диалог->выбираем существующий файл->два диалог->File already exists, owerwrite?
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2494

чтоб работа волком не казалась :)


Просмотр профиля WWW
« Ответ #11 : Июнь 06, 2018, 16:56 »

Хмммм, Widget->File->Save As->раз диалог->выбираем существующий файл->два диалог->File already exists, owerwrite?

2 уровня (как тут) - еще нормально и привычно, но вот 3 - немного перебор... Куча модальных окошек в настройках Винды всегда нервировала Улыбающийся
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

http://sintegrial.com - всякий хороший Qt софт (был Грустный )
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 10270


Просмотр профиля
« Ответ #12 : Июнь 06, 2018, 17:14 »

Хмммм, Widget->File->Save As->раз диалог->выбираем существующий файл->два диалог->File already exists, owerwrite?
Исключения подтверждают правила  Улыбающийся Здесь как раз и нужно 2, без первого неясно к чему относится второй (какой файл?)
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2699


Просмотр профиля
« Ответ #13 : Июнь 06, 2018, 17:38 »

Исключения подтверждают правила  Улыбающийся

Чушь, придуманная гуманитариями:)

В Кедах, кстати, первый диалог исчезает, что не оч удобно - приходится начинать всё сызнова, если жамкнул отмену.

Здесь как раз и нужно 2, без первого неясно к чему относится второй (какой файл?)

Как я понял, у топикстартера первый диалог запускает долгую операцию, которая рисуется во втором диалоге. В целом, то же самое, на той же макоси такое встречается повсеместно.
В противном случае, не понимаю, почему действительно нельзя похайдить диалог.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 10270


Просмотр профиля
« Ответ #14 : Июнь 06, 2018, 17:51 »

с флагом StayOnTopHint,
Кстати о птичках: а что там с переключением на др приложение? Окно с этим флагом продолжает торчать? (не гуд). Давненько не обновлялся, может уже сделали
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  

Страница сгенерирована за 0.169 секунд. Запросов: 22.