如何弹出另一个窗口,扩展QWidget而不是QDialog?

时间:2010-05-12 21:23:45

标签: user-interface qt

到目前为止,我只有我的主窗口弹出其他QDialogs的窗口,我没有让它与QWidget一起工作。我要显示的另一个窗口是使用表单编辑器设计的,然后包含在一个名为ResultViewer的类中,该类扩展了QWidget(而不是QDialog)。我想要的是让ResultViewer在一个单独的窗口中显示它的ui。现在,当我尝试显示它时,ResultViewer ui只会弹出主窗口ui的主窗口。

我用来显示它的代码就是这个(在我的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 个答案:

答案 0 :(得分:3)

如果您只想在应用程序中显示第二个窗口并且有两个顶级窗口小部件,请尝试更改:

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

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

查看QWidget构造函数文档http://doc.trolltech.com/4.6/qwidget.html#QWidget,了解为什么要以这种方式完成。

顺便说一下,QDialog非常适合应用程序中其他窗口的基类。我不明白你为什么不想用它。