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;
...
当我尝试在派生自 QObject 的 class 中启动 QTimer 时,我收到警告
QObject::startTimer: Timers can only be used with threads started with QThread
并且计时器没有 运行。根据回答
我的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;
...