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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: окно в фоновом режиме  (Прочитано 5302 раз)
tornadodead
Гость
« : Март 05, 2012, 12:48 »

Отображаю диалоговое окно(модальное, по началу),
Код:
MyDialog.setModel(true);
MyDialog->show();
затем нужно при нажатии кнопки в нем, сделать его не модальным и фоновым
пробую так
Код:
this.setModal(false);
this->setWindowModality(Qt::NonModal);
но как то без успешно
Записан
mutineer
Гость
« Ответ #1 : Март 05, 2012, 12:55 »

Конечно безуспешно

Цитировать
windowModality : Qt::WindowModality
Changing this property while the window is visible has no effect; you must hide() the widget first, then show() it again.

Цитировать
void    setModal ( bool modal )
This property holds whether show() should pop up the dialog as modal or modeless

Нельзя поменять модальность уже видимого окна
Записан
tornadodead
Гость
« Ответ #2 : Март 05, 2012, 13:02 »

Цитировать
Нельзя поменять модальность уже видимого окна
и что мне при нажатии кнопки, скрывать, затем заново отображать окно? как то мерцает это все дело=)))
« Последнее редактирование: Март 05, 2012, 13:17 от tornadodead » Записан
Bepec
Гость
« Ответ #3 : Март 05, 2012, 13:15 »

И научиться цитаты добавлять. Зачем вообще модальное окно делать фоновым???

Сей вопрос меня занимает однако...
Записан
tornadodead
Гость
« Ответ #4 : Март 05, 2012, 13:20 »

И научиться цитаты добавлять. Зачем вообще модальное окно делать фоновым???
Сей вопрос меня занимает однако...
сорри=)))
тут дело такое, нужно вывести пользователю модальное окно, и затем как он подтвердит(или еще что-то), то его сделать не модальным, оно будет отображать некий процесс, а потом уж само закроется=)))
Записан
Bepec
Гость
« Ответ #5 : Март 05, 2012, 13:22 »

Не проще его убрать нафиг, взамен выведя окно ожидания аля "индикатор, надпись подожжите и красную кнопочку отмены?".

Ну если честно, смысла особого не вижу. Если ты выводишь модальным, так держи марку до конца.
Записан
mutineer
Гость
« Ответ #6 : Март 05, 2012, 13:29 »

Цитировать
Нельзя поменять модальность уже видимого окна
и что мне при нажатии кнопки, скрывать, затем заново отображать окно? как то мерцает это все дело=)))

Прежде всего стоит читать справку по используемым функциям
Записан
tornadodead
Гость
« Ответ #7 : Март 05, 2012, 13:29 »

Ну если честно, смысла особого не вижу. Если ты выводишь модальным, так держи марку до конца.
нет сначало нужно действие пользователя, типо подтвердить, а потом уже выполнять задачу, а окошко, должно быть на случай отмены.
Цитировать
Не проще его убрать нафиг, взамен выведя окно ожидания аля "индикатор, надпись подожжите и красную кнопочку отмены?".
так и будет, но при этом доступ должен быть к главному окну.
т.е. когда пользователь подтвердит, сделать типо
Код:
        this->hide();
        this->setWindowModality(Qt::NonModal);        
        this->show();
Записан
Bepec
Гость
« Ответ #8 : Март 05, 2012, 13:37 »

Это плохо и нервирует пользователя.

Учись интерфейсу у популярных программ. Тот же Total Commander - запрос на копирование - модальное окно с параметрами и кнопкой подтверждения.

Подтверждаешь - остаётся модальное окно с кнопкой "в фоне".

Щёлкаешь "в фоне"  - модальный виджет убирается, отображается сокращённый, немодальный с полосой процесса.
Записан
tornadodead
Гость
« Ответ #9 : Март 05, 2012, 13:41 »

Это плохо и нервирует пользователя.
Учись интерфейсу у популярных программ. Тот же Total Commander - запрос на копирование - модальное окно с параметрами и кнопкой подтверждения.
Подтверждаешь - остаётся модальное окно с кнопкой "в фоне".
Щёлкаешь "в фоне"  - модальный виджет убирается, отображается сокращённый, немодальный с полосой процесса.
Возможно так и есть, тут смысл не в том, а как из модального сделать не модальное, ну как понял, манипулировать методами hide() и show()
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #10 : Март 05, 2012, 13:53 »

Модальность легко решается перегрузкой QCoreApplication::notify(), в котором просто дропаешь все мышиные и клавиатурные события для виджетов модального окна, что в принципе и делает Qt.
Записан

Qt 5.11/4.8.7 (X11/Win)
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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