Циклит QDialog::exec() в рамках QMdiArea |
Здравствуйте, гость ( Вход | Регистрация )
Циклит QDialog::exec() в рамках QMdiArea |
mva |
18.3.2010, 10:03
Сообщение
#1
|
Участник Группа: Участник Сообщений: 104 Регистрация: 15.3.2009 Из: Киров Пользователь №: 615 Спасибо сказали: 3 раз(а) Репутация: 0 |
Добрый день!
Я хочу создать класс окна, который может работать в рамках QMdiArea как простое окно и как модальное. Делаю я это так (если все представить упрощенно): CODE class Form: public QDialog { Q_OBJECT public: Form(QWidget* pwgt = 0); ... protected: QMdiSubWindow* mdiSubWindow; virtual int exec(); virtual void show(); ... }; Form::Form(QWidget* pwgt): QDialog(pwgt, Qt::WindowTitleHint) { ... mdiSubWindow = app->getMainWindow()->getWorkspace()->addSubWindow(this, Qt::Window); mdiSubWindow->setAttribute(Qt::WA_DeleteOnClose, false); mdiSubWindow->setVisible(false); } int Form::exec() { return QDialog::exec(); // Здесь программа зацикливается - создает локальный обработчик событий, которые не поступают } void Form::show() { QDialog::show(); // Здесь программа нормально работает } Проблема в том, что если я вызываю Form.show(), то все работает нормально, а если вызываю Form.exec(), то программа начинает циклить, и не отвечает ни на клавиатуру, ни на мышь. Что я делаю не так? |
|
|
Текстовая версия | Сейчас: 30.11.2024, 9:07 |