crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Циклит 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(), то программа начинает циклить, и не отвечает ни на клавиатуру, ни на мышь.

Что я делаю не так?

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 30.11.2024, 9:07