这个简化的 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/