QT5中,程序运行主窗体不显示,执行定时器,定时事件为QMessagebox后程序退出

问题遇到的现象和发生背景

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时间不长,请各路牛人给弟弟解答,小弟感激不尽!