User interface 如何使另一个弹出窗口扩展QWidget而不是QDialog?
到目前为止,我只让我的主窗口弹出其他的QDialogs窗口,我没有让它与QWidget一起工作。我想显示的另一个窗口是用表单编辑器设计的,然后封装在一个名为ResultViewer的类中,该类扩展了QWidget(与QDialog相反)。我想要的是让ResultViewer在一个单独的窗口中显示它的ui。现在,当我尝试显示它时,ResultViewer ui会在主窗口ui顶部的主窗口中弹出 我用来显示它的代码如下(在mainwindow.cpp文件中) ResultViewer的构造函数如下所示User interface 如何使另一个弹出窗口扩展QWidget而不是QDialog?,user-interface,qt,User Interface,Qt,到目前为止,我只让我的主窗口弹出其他的QDialogs窗口,我没有让它与QWidget一起工作。我想显示的另一个窗口是用表单编辑器设计的,然后封装在一个名为ResultViewer的类中,该类扩展了QWidget(与QDialog相反)。我想要的是让ResultViewer在一个单独的窗口中显示它的ui。现在,当我尝试显示它时,ResultViewer ui会在主窗口ui顶部的主窗口中弹出 我用来显示它的代码如下(在mainwindow.cpp文件中) ResultViewer的构造函数如下所示
ResultViewer::ResultViewer(QWidget * parent) :
QWidget(parent),
ui(new Ui::ResultViewer)
{
ui->setupUi(this);
}
我已经浏览了一些QWidget文档,但我能找到的唯一相关内容是
QWidget::window()
函数,但解释不是很清楚,它只是给出了一个更改窗口标题的示例。如果您只想在应用程序中显示第二个窗口,并且有两个顶级窗口小部件,请尝试更改:
ResultViewer * rv = new ResultView(this);
rv->show();
到
看看QWidget构造函数文档,了解为什么应该这样做
顺便说一句,QDialog确实是应用程序中附加窗口的良好基类。我不明白您为什么不想使用它。如果您只想在应用程序中显示第二个窗口,并且有两个顶级小部件,请尝试更改:
ResultViewer * rv = new ResultView(this);
rv->show();
到
看看QWidget构造函数文档,了解为什么应该这样做
顺便说一句,QDialog确实是应用程序中附加窗口的良好基类。我不明白您为什么不想使用它。谢谢VestniK,进一步研究一下,我想我可能会切换到QDialog。最初我不想使用它,因为它们通常会在打开时阻止主窗口,但很明显这很容易改变。Dialods可以是模态的,也可以是非模态的。如果您使用QDialog::show()(实际上这个函数继承自QWidget),它是非模态的(不阻塞主窗口)。如果您使用QDialog::exec(),您的对话框是模态的(阻塞主窗口)。感谢VestniK,进一步研究,我想我实际上可能会切换到QDialog。最初我不想使用它,因为它们通常会在打开时阻止主窗口,但很明显这很容易改变。Dialods可以是模态的,也可以是非模态的。如果您使用QDialog::show()(实际上这个函数继承自QWidget),它是非模态的(不阻塞主窗口);如果您使用QDialog::exec(),您的对话框是模态的(阻塞主窗口)。
ResultViewer * rv = new ResultView();
rv->show();