Как заставить всплывающее окно, расширяющее QWidget, в отличие от QDialog? - PullRequest
0 голосов
/ 13 мая 2010

До сих пор у меня было только главное окно с всплывающими окнами, которые были QDialogs, и я не заставляю его работать с QWidget. Другое окно, которое я хочу отобразить, было разработано с помощью редактора форм, затем обернуто в класс с именем ResultViewer, который расширяет QWidget (в отличие от QDialog). Я хочу, чтобы ResultViewer показывал свой интерфейс в отдельном окне. Теперь, когда я пытаюсь отобразить его, пользовательский интерфейс ResultViewer просто появляется в главном окне поверх пользовательского интерфейса главного окна.

Код, который я использую для отображения именно этого (в моем файле mainwindow.cpp)

ResultViewer * rv = new ResultView(this);
rv->show();

Конструктор для ResultViewer выглядит следующим образом

ResultViewer::ResultViewer(QWidget * parent) :
    QWidget(parent),
    ui(new Ui::ResultViewer)
{
    ui->setupUi(this);
}

Я немного просмотрел документацию по QWidget, но единственное, что я могу найти, это может быть связано с функцией QWidget::window(), но объяснение не очень понятно, оно просто дает пример изменения названия окно.

1 Ответ

3 голосов
/ 13 мая 2010

Если вы просто хотите показать второе окно в вашем приложении и иметь два виджета верхнего уровня, попробуйте изменить:

ResultViewer * rv = new ResultView(this);
rv->show();

до

ResultViewer * rv = new ResultView();
rv->show();

Взгляните на документацию конструктора QWidget http://doc.trolltech.com/4.6/qwidget.html#QWidget, чтобы понять, почему это нужно сделать таким образом.

Кстати, QDialog действительно хороший базовый класс для дополнительных окон в вашем приложении. Я не понимаю, почему вы не хотите его использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...