c++ - Qt 如何管理另一个窗口?

标签 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();
}

最佳答案

您可以在堆上创建窗口,并让它在关闭时自行删除:

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

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

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

关于c++ - Qt 如何管理另一个窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59107855/

相关文章:

c++ - C++ 程序执行错误 : static executable calls DLL library

c++ - 将符合 Qt 的 C++ 转换为 ui XML(QtDesigner) 格式 :

c++ - c++中extern的使用

qt - 从Xcode 8开始Qt不起作用

c++ - 如何将任意数量的参数传递给 C++ 模板函数?

c++ - 如何通过 C 或 C++ API 获取 HDF5 数据集的名称?

c++ - Qt 程序无故意外结束

c++ - Qt::QStackedWidget 插入 vs 子部件构造函数调用

qt - 启动连接后将 QTcpSocket 移动到新线程

c++ - 将 Qt 集成到遗留 MFC 应用程序中