如何在Qt中管理另一个窗口?

时间:2019-11-29 15:52:49

标签: c++ qt

此简化的C ++源代码显示了此问题。 对于某些GUI操作,有一个主窗口,其中有一个“开始”按钮来启动功能中的另一个窗口。需要像主窗口一样显示此窗口直到用户退出。 是否可以以类似方式应用exec()函数?希望没有任何类定义和头文件。如下所述,使用sleep()并不是一个好的解决方案。没有这个,窗口很快就会消失。

#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QPushButton>
#include <QThread>

void next()
{
    QMainWindow nextWin;
    nextWin.show();
    QThread::sleep(10);
}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QMainWindow mainWin;
    QPushButton *Start = new QPushButton;
    Start->setText("Start");
    mainWin.setCentralWidget(Start);
    mainWin.setGeometry(300,200,100,100);
    mainWin.show();
    QObject::connect(Start, &QPushButton::clicked, next);
    return a.exec();
}

1 个答案:

答案 0 :(得分:1)

您可以在堆上创建窗口,并在关闭窗口时将其删除:

void next()
{
    QMainWindow* nextWin = new QMainWindow();
    nextWin->setAttribute(Qt::WA_DeleteOnClose);
    nextWin->show();
}

但是,我认为您的应用程序中不应有多个主窗口。改用QDialog或QWidget。

void next()
{
    QDialog nextWin;
    nextWin.exec();
}