Russian Qt Forum

Qt => Вопросы новичков => Тема начата: rik_rik от Март 16, 2011, 19:37



Название: Фокус окна, модальное окно
Отправлено: rik_rik от Март 16, 2011, 19:37
Доброго времени суток.
Требуется подсказка. Как вернуть фокус главному окну после закрытия модального у меня почему-то оно в дизайбле, после закрытия модального ?


Название: Re: Фокус окна, модальное окно
Отправлено: Пантер от Март 16, 2011, 19:38
Как показываешь модальное окно?


Название: Re: Фокус окна, модальное окно
Отправлено: rik_rik от Март 16, 2011, 21:27
Код:
    QDialog *MyWinModal;
    MyWinModal = new QDialog();
    MyWinModal->setModal(true);
    MyWinModal->setWindowModality(Qt::ApplicationModal);
    if (MyWinModal->exec() == QDialog::Accepted)
    {
    }

вот так вызываю


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


Название: Re: Фокус окна, модальное окно
Отправлено: rik_rik от Март 16, 2011, 22:11
 MyWinModal->setWindowModality(Qt::ApplicationModal);  - не знал куда еще крутить педали
все дело в родители MyWinModal = new QDialog(this);
MyWinModal является атрибутом класса в котором и создается. Кидать ему в конструктор this - нормально ?
как создать на стеке?


Название: Re: Фокус окна, модальное окно
Отправлено: Пантер от Март 16, 2011, 22:15
Код
C++ (Qt)
QDialog MyWinModal (this);
MyWinModal.setModal(true);
if (MyWinModal.exec() == QDialog::Accepted)
{
}
 


Название: Re: Фокус окна, модальное окно
Отправлено: rik_rik от Март 16, 2011, 22:22
понял, спасибо


Название: Re: Фокус окна, модальное окно
Отправлено: serg_hd от Март 16, 2011, 22:31
а зачем тут метод setModal()?

exec() ignores the value of this property and always pops up the dialog as modal


Название: Re: Фокус окна, модальное окно
Отправлено: Пантер от Март 16, 2011, 22:37
Да, это тоже лишнее.