Russian Qt Forum
Ноябрь 23, 2024, 04:47
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Диалоги :)
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Диалоги :) (Прочитано 10001 раз)
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Диалоги :)
«
:
Июнь 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.
COVID не волк, в лес не уйдёт
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Диалоги :)
«
Ответ #1 :
Июнь 06, 2018, 13:35 »
А заюзать вместо QProgressDialog QProgressBar с кнопкой?
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Диалоги :)
«
Ответ #2 :
Июнь 06, 2018, 13:43 »
Цитата: Пантер от Июнь 06, 2018, 13:35
А заюзать вместо 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.
COVID не волк, в лес не уйдёт
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: Диалоги :)
«
Ответ #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
Сообщений: 3260
Re: Диалоги :)
«
Ответ #4 :
Июнь 06, 2018, 14:34 »
Кажется, что-то намутили с парентами, на маке я делал несколько вложенных модальных диалогов, по типу такого
https://apple.insidercdn.com/gallery/24576-32330-removedrives-2-xl.jpg
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Диалоги :)
«
Ответ #5 :
Июнь 06, 2018, 14:44 »
Цитата: Racheengel от Июнь 06, 2018, 13:43
Цитата: Пантер от Июнь 06, 2018, 13:35
А заюзать вместо QProgressDialog QProgressBar с кнопкой?
ммм.. а что это изменит? будет самописный диалог, но как это решит проблему перекрытия других окон?
В смописном диалоге сможешь отображать прогресс и запрашивать у пользователя реакцию.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Диалоги :)
«
Ответ #6 :
Июнь 06, 2018, 14:50 »
Цитата: Авварон от Июнь 06, 2018, 14:34
Кажется, что-то намутили с парентами, на маке я делал несколько вложенных модальных диалогов, по типу такого
https://apple.insidercdn.com/gallery/24576-32330-removedrives-2-xl.jpg
Парентов у этих диалогов нет вообще (потому что они друг о друге не знают архитектурно).
В любом случае, бутерброд из 3+ диалогов нехорошо смотрится с т.з. дизайна.
Цитата: kambala от Июнь 06, 2018, 14:04
может засунуть прогрессбар прямо в диалог? или там показывать % выполнения в заголовке диалога...
Ну для этого "основной" диалог ломать придется, а это не только одно место - есть еще парочка подобных.
Вот есть идея сделать "мета-диалог", в который все "дети" могут кидать свою инфу, при необходимости кнопки показывать и пр. Но будет ли это практичным - хз..
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Диалоги :)
«
Ответ #7 :
Июнь 06, 2018, 14:55 »
Цитата: Racheengel от Июнь 06, 2018, 14:50
Парентов у этих диалогов нет вообще (потому что они друг о друге не знают архитектурно).
Ну вот вам и ответ на вашу проблему:)
В целом, ничего плохо в 2х диалогах поверх виджета (итого 3 виджета), нет. Выше уже да, проблемы дизайна. Кажется, тогда лучше на визард передедать.
Энивей, если у вас диалог живет пока живет другой диалог, они должны быть состаканы через парента.
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Диалоги :)
«
Ответ #8 :
Июнь 06, 2018, 16:07 »
Цитата: Авварон от Июнь 06, 2018, 14:55
Энивей, если у вас диалог живет пока живет другой диалог, они должны быть состаканы через парента.
Эти диалоги друг о друге вообще ничего не знают - даже живут в разных модулях.
Наверное все таки вариант с 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.
COVID не волк, в лес не уйдёт
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Диалоги :)
«
Ответ #9 :
Июнь 06, 2018, 16:21 »
Цитата: Racheengel от Июнь 06, 2018, 14:50
В любом случае, бутерброд из 3+ диалогов нехорошо смотрится с т.з. дизайна.
Вернее из 2 модальных. Да, плохо, не годится, модальный диалог должен быть только 1, на то он и модальный.
Да, отображать прогресс в самом (первом) модальном диалоге - очевидно лучше всего, но это не всегда просто сделать. Более дешевый вариант - скрывать первый, ну конечно выждать (может операция короткая), а после завершения операции опять показать. Небогато но приемлемо
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Диалоги :)
«
Ответ #10 :
Июнь 06, 2018, 16:33 »
Цитата: Igors от Июнь 06, 2018, 16:21
Цитата: Racheengel от Июнь 06, 2018, 14:50
В любом случае, бутерброд из 3+ диалогов нехорошо смотрится с т.з. дизайна.
Вернее из 2 модальных. Да, плохо, не годится, модальный диалог должен быть только 1, на то он и модальный.
Хмммм, Widget->File->Save As->раз диалог->выбираем существующий файл->два диалог->File already exists, owerwrite?
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Диалоги :)
«
Ответ #11 :
Июнь 06, 2018, 16:56 »
Цитата: Авварон от Июнь 06, 2018, 16:33
Хмммм, 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.
COVID не волк, в лес не уйдёт
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Диалоги :)
«
Ответ #12 :
Июнь 06, 2018, 17:14 »
Цитата: Авварон от Июнь 06, 2018, 16:33
Хмммм, Widget->File->Save As->раз диалог->выбираем существующий файл->два диалог->File already exists, owerwrite?
Исключения подтверждают правила
Здесь как раз и нужно 2, без первого неясно к чему относится второй (какой файл?)
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Диалоги :)
«
Ответ #13 :
Июнь 06, 2018, 17:38 »
Цитата: Igors от Июнь 06, 2018, 17:14
Исключения подтверждают правила
Чушь, придуманная гуманитариями:)
В Кедах, кстати, первый диалог исчезает, что не оч удобно - приходится начинать всё сызнова, если жамкнул отмену.
Цитата: Igors от Июнь 06, 2018, 17:14
Здесь как раз и нужно 2, без первого неясно к чему относится второй (какой файл?)
Как я понял, у топикстартера первый диалог запускает долгую операцию, которая рисуется во втором диалоге. В целом, то же самое, на той же макоси такое встречается повсеместно.
В противном случае, не понимаю, почему действительно нельзя похайдить диалог.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Диалоги :)
«
Ответ #14 :
Июнь 06, 2018, 17:51 »
Цитата: Racheengel от Июнь 06, 2018, 13:16
с флагом StayOnTopHint,
Кстати о птичках: а что там с переключением на др приложение? Окно с этим флагом продолжает торчать? (не гуд). Давненько не обновлялся, может уже сделали
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...