gpt4 book ai didi

qt - 为什么在 exec() 之前调用 quit() 不会退出应用程序?

转载 作者:太空宇宙 更新时间:2023-11-04 13:33:46 25 4
gpt4 key购买 nike

为什么这个程序可以正常运行并显示主窗口?我希望它退出,因为在构造函数中调用了 quit()

main.cpp :

#include<QApplication>
#include"MainWindow.h"

int main(int argc, char* argv[])
{
QApplication app(argc, argv);
MainWindow mainWindow;
mainWindow.show();
return app.exec();
}

主窗口.cpp:

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent)
{
qApp->quit();
}

void MainWindow::closeEvent(QCloseEvent *)
{
qDebug("Hello world!");
}

最佳答案

因为 QCoreApplication::quit() 在事件循环开始之前是一个空操作,所以你需要推迟调用直到它开始。因此,将延迟方法调用排队到 quit()

下面几行是functionally identical , 任何一个都可以工作:

QTimer::singleShot(0, qApp, &QCoreApplication::quit);
//or
QTimer::singleShot(0, qApp, SLOT(quit()));
// or - see https://stackoverflow.com/a/21653558/1329652
postToThread([]{ QCoreApplication::quit(); });
// or
QMetaObject::invokeMethod(qApp, "quit", Qt::QueuedConnection);

关于qt - 为什么在 exec() 之前调用 quit() 不会退出应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30494514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com