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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Фокус окна, модальное окно  (Прочитано 9417 раз)
rik_rik
Гость
« : Март 16, 2011, 19:37 »

Доброго времени суток.
Требуется подсказка. Как вернуть фокус главному окну после закрытия модального у меня почему-то оно в дизайбле, после закрытия модального ?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #1 : Март 16, 2011, 19:38 »

Как показываешь модальное окно?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
rik_rik
Гость
« Ответ #2 : Март 16, 2011, 21:27 »

Код:
    QDialog *MyWinModal;
    MyWinModal = new QDialog();
    MyWinModal->setModal(true);
    MyWinModal->setWindowModality(Qt::ApplicationModal);
    if (MyWinModal->exec() == QDialog::Accepted)
    {
    }

вот так вызываю
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #3 : Март 16, 2011, 21:31 »

1. MyWinModal->setWindowModality(Qt::ApplicationModal); зачем?
2. MyWinModal = new QDialog(this); - указывай родителя.
3. Лучше вообще не в куче, а на стеке создавать диалог.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
rik_rik
Гость
« Ответ #4 : Март 16, 2011, 22:11 »

 MyWinModal->setWindowModality(Qt::ApplicationModal);  - не знал куда еще крутить педали
все дело в родители MyWinModal = new QDialog(this);
MyWinModal является атрибутом класса в котором и создается. Кидать ему в конструктор this - нормально ?
как создать на стеке?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #5 : Март 16, 2011, 22:15 »

Код
C++ (Qt)
QDialog MyWinModal (this);
MyWinModal.setModal(true);
if (MyWinModal.exec() == QDialog::Accepted)
{
}
 
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
rik_rik
Гость
« Ответ #6 : Март 16, 2011, 22:22 »

понял, спасибо
Записан
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #7 : Март 16, 2011, 22:31 »

а зачем тут метод setModal()?

exec() ignores the value of this property and always pops up the dialog as modal
Записан

kubuntu/Win7/x64/NetBeans
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #8 : Март 16, 2011, 22:37 »

Да, это тоже лишнее.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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