我的应用程序有一个主窗口,当点击一个按钮时,我有一个用于打开弹出窗口的插槽:
void MainWindow::slotContinue()
{
PopupWindow *pop = new PopupWindow(this);
pop->show();
}
我将this
传递给弹出窗口,以便弹出窗口中的按钮可以连接到主窗口的插槽。
PopupWindow::PopupWindow(QWidget *parent) :
QWidget(parent)
{
setFixedSize(360, 100);
contButton = new QPushButton("Continue", this);
contButton->setGeometry(140, 60, 80, 30);
connect(contButton, SIGNAL(clicked()), parent, SLOT(slotCalibrate()));
connect(contButton, SIGNAL(clicked()), this, SLOT(close()));
}
弹出窗口永远不会出现。出现继续按钮,但它是主窗口的一部分。按钮的功能很好。单击它后,slotCalibrate()
成功调用,按钮消失,但我无法弄清楚为什么它应该是祖父母的孩子。
如果我没有将this
传递给弹出式构造函数,则会出现窗口,但我无法将继续按钮连接到slotCalibrate()
。
答案 0 :(得分:2)
PopupWindow
类继承自QWidget
,因此默认情况下它不是一个窗口,如果它有一个父窗口,它将是该父窗口的一部分,你需要将它设置为窗口:
void MainWindow::slotContinue()
{
PopupWindow *pop = new PopupWindow(this);
pop->setWindowFlags(Qt::Window);
pop->show();
}