此简化的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();
}
答案 0 :(得分:1)
您可以在堆上创建窗口,并在关闭窗口时将其删除:
void next()
{
QMainWindow* nextWin = new QMainWindow();
nextWin->setAttribute(Qt::WA_DeleteOnClose);
nextWin->show();
}
但是,我认为您的应用程序中不应有多个主窗口。改用QDialog或QWidget。
void next()
{
QDialog nextWin;
nextWin.exec();
}