QCoreApplication退出不起作用

aar*_*ich 3 qt

我创建了一个控制台程序。出于调试目的,如果不满足某些条件,我需要退出程序。这是一个例子:

if (VDD.isEmpty() || GND.isEmpty()){
    qWarning() << "VDD and GND must NOT be empty";
    QCoreApplication::quit();
    qWarning() << "After the quit";
}
Run Code Online (Sandbox Code Playgroud)

据我了解,quit()不应打印之后的输出。

main()我的程序的功能是这样的:

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    // Do stuff that calls the code above

    return a.exec();
}
Run Code Online (Sandbox Code Playgroud)

谁能说出这是为什么呢?

我目前正在使用abort(),但我宁愿使用quit()

Tob*_*ght 5

quit()导致事件循环在下一次获得控制时返回。它不会立即返回。所以你需要像

QCoreApplication::quit();
return;
Run Code Online (Sandbox Code Playgroud)

或者如果您使用的不是直接从Qt调用的方法,则可能会更复杂一些。

相关exit()方法的文档说:

请注意,与同名的C库函数不同,此函数的确会返回给调用方-事件处理停止。