【问题标题】:QCoreApplication quit not workingQCoreApplication 退出不工作
【发布时间】:2017-07-20 12:04:15
【问题描述】:

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

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

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

我的程序的main() 函数是这样的:

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

    // Do stuff that calls the code above

    return a.exec();
}

谁能说出为什么会这样?

目前我使用的是abort(),但我更愿意使用quit()

【问题讨论】:

    标签: qt


    【解决方案1】:

    quit() 导致事件循环返回下一次获得控制权时。它不会立即返回。所以你需要类似的东西

    QCoreApplication::quit();
    return;
    

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

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

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

    【讨论】:

    • 啊。我得到它。那我就坚持中止。谢谢!
    • @aarelovich,除非您正在处理SIGABRT 信号,否则std::abort 会导致程序异常终止。你最好使用std::exit。如果你只是想从主函数中退出应用程序,一个 return 语句就可以完成这项工作。 . .
    猜你喜欢
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    • 2013-05-11
    • 2018-11-07
    • 2013-12-22
    • 2022-06-28
    相关资源
    最近更新 更多