问题遇到的现象和发生背景
Win10系统。在很偶然的情况下遇到到如题的情况。主要实现过程如下:
1、在main.cpp中取消执行show方法;
2、在窗口构造函数中start一个定时器QTimer
相关代码如下:
//main.cpp中
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
//w.show();
return a.exec();
}
//mainwindow.cpp中
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//timer在头文件中已经定义
timer = new QTimer(this);
connect(timer,&QTimer::timeout,this,[=](){
//测试一
//QMessageBox::information(NULL, "Title", "Content",QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
//测试二
//qDebug()<<"1";
//测试三
QMessageBox m;
m.exec();
});
timer->start(1000 * 2);
}
问题相关代码,请勿粘贴截图
运行结果及报错内容
在进行测试一时,会弹出一次QMessageBox,点击QMessageBox的Yes或No后,程序也随之退出;
在进行测试二和测试三时,程序却一直不会自动退出,而是一直运行下去,分别一直输出“1”和输出QMessageBox对话框;
我的解答思路和尝试过的方法
起初我以为是模态对话框导致,猜测是不是跟Windows系统相关,然后我又以大概的思路写了WPF程序,发现WPF程序并不会退出程序,而是会一直运行,
我想要达到的结果
现在我想知道为什么在QT中会有这样的情况。
本人接触QT时间不长,请各路牛人给弟弟解答,小弟感激不尽!