QObject Child Class 未检测到 QGuiApplication 事件循环

QObject Child Class Not Detecting QGuiApplication Event Loop

当我尝试在派生自 QObject 的 class 中启动 QTimer 时,我收到警告

QObject::startTimer: Timers can only be used with threads started with QThread

并且计时器没有 运行。根据回答 ,我的自定义 class 似乎没有检测到由 QGuiApplication 创建的 QEventLoop。

我的main.cpp

...
classA objA;
...
QGuiApplication app(argc, argv);
...

我的classA.h

class classA : public QObject
{
   Q_OBJECT
   private: 
      QTimer m_oTimer;
...

我的classA.cpp

classA::classA()
{
   ...
   m_oTimer.start(100);
   ...
}

如何在不创建新的 QEventLoop 的情况下解决这个问题?

我可以通过更改 classA​​ 和 QGuiApplication 的声明顺序来解决问题。似乎对于任何 QObject 子 class 检测 QGuiApplication Eventloop,它必须在 QGuiApplication 之后声明。

我的main.cpp:

...
QGuiApplication app(argc, argv);
...
classA objA;
...