利用Qt进行开发过程中发现有时候创建的QDialog对象不会显示在主窗口的后面,如下图所示(当鼠标点击主窗口界面时,主窗口并没有覆盖new出来的子窗口):
部分源代码如下:
setWindowTitle("主窗口");
QDialog *newDialog = new QDialog(this);
QWidget *newWidget = new QWidget(newDialog);
newDialog->setWindowTitle("QDialog窗口");
QPushButton *btn = new QPushButton("按钮1",newWidget);
QPushButton *btn_Two = new QPushButton("按钮2",newWidget);
QPushButton *btn_Three = new QPushButton("按钮3",newWidget);
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(btn);
layout->addWidget(btn_Two);
layout->addWidget(btn_Three);
newWidget->setLayout(layout);
QVBoxLayout *layout_Two = new QVBoxLayout(newDialog);
layout_Two->addWidget(newWidget);
newDialog->show();
原因:从代码中可以看到创建QDialog对象的时候指定了父对象,若不指定父对象,则可以覆盖new出来的子窗口,即修改以下代码
QDialog *newDialog = new QDialog;
效果: