c++ - QObject 子类未检测到 QGuiApplication 事件循环
问题描述
当我尝试在从 QObject 派生的类中启动 QTimer 时,我收到警告
QObject::startTimer:定时器只能用于以 QThread 启动的线程
并且计时器不运行。根据此处的回答,我的自定义类似乎没有检测到由 QGuiApplication 创建的 QEventLoop。
我的 main.cpp
...
classA objA;
...
QGuiApplication app(argc, argv);
...
我的课A.h
class classA : public QObject
{
Q_OBJECT
private:
QTimer m_oTimer;
...
我的classA.cpp
classA::classA()
{
...
m_oTimer.start(100);
...
}
如何在不创建新 QEventLoop 的情况下解决此问题?
解决方案
我可以通过更改我的 classA 和 QGuiApplication 的声明顺序来解决这个问题。看来任何QObject子类要检测QGuiApplication Eventloop,都必须在QGuiApplication之后声明。
我的 main.cpp:
...
QGuiApplication app(argc, argv);
...
classA objA;
...
推荐阅读
- jupyter-notebook - 在删除代码和边框的同时将 Jupyter-notebook 导出为 html
- machine-learning - 大型数据集的 EM 算法
- loops - PySpark 地理位置将重复行排序到列枢轴
- knockout.js - KNOCKOUT JS: $root, $parent and $parents parameter in nested foreach giving me $data
- r - 如何对数据集和模型执行迭代的、受限的排列?
- python - 根据条件 python pandas 追加新行
- node.js - 使用 googleapis npm 包时,如何在弹出窗口中打开谷歌驱动器身份验证?
- html - 将 sass 文件集成到反应项目中的问题
- c - C中的值赋值,同时在1行中声明多个变量
- xslt - 使用 XSLT 获取 xml 中的内部标签