QPushButton附加到祖父母

时间:2014-07-17 13:23:50

标签: qt qt-creator

我的应用程序有一个主窗口,当点击一个按钮时,我有一个用于打开弹出窗口的插槽:

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()

1 个答案:

答案 0 :(得分:2)

PopupWindow类继承自QWidget,因此默认情况下它不是一个窗口,如果它有一个父窗口,它将是该父窗口的一部分,你需要将它设置为窗口:

void MainWindow::slotContinue()
{
    PopupWindow *pop = new PopupWindow(this);
    pop->setWindowFlags(Qt::Window);
    pop->show();
}