查看以下代码:
#include <QDebug>
#include <QCoreApplication>
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
qDebug() << QCoreApplication::instance(); // prints QCoreApplication(0x7ffd39656150)
QCoreApplication app2(argc, argv);
qDebug() << QCoreApplication::instance(); // prints QCoreApplication(0x7ffd39656160)
return 0;
}
Run Code Online (Sandbox Code Playgroud)
看起来可以创建多个QCoreApplication对象,但这应该是一个单例.第一个创建的QCoreApplication对象会发生什么?当exec被调用两个对象时,它是被销毁还是会有两个事件循环?
那是违法的.您可能正在运行Qt的发布版本,并禁用断言.
https://code.woboq.org/qt5/qtbase/src/corelib/kernel/qcoreapplication.cpp.html#742清楚地说明你不能同时存活两个QCoreApplication:
void QCoreApplicationPrivate::init()
{
Q_Q(QCoreApplication);
initLocale();
Q_ASSERT_X(!QCoreApplication::self, "QCoreApplication", "there should be only one application object");
QCoreApplication::self = q;
....
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
150 次 |
| 最近记录: |