QT console 程序使用了qt_service库做 windows服务后没法使用QTimer应该怎么解决?

baidu_28726667 2019-11-25 08:52:34
int main(int argc, char *argv[])
{

// QCoreApplication a(argc, argv);

My_WindowsService service(argc, argv);

My_CustomFunction NewCustomFunction;
QTimer * pQTimer = new QTimer(&NewCustomFunction);
QObject::connect(pQTimer,SIGNAL(timeout()),&NewCustomFunction,SLOT(TestPrint()));
pQTimer->start(3000);

return service.exec();

// return a.exec();
}


会提示[Warning]QObject::startTimer: Timers can only be used with threads started with QThread

把定时器代码放在My_WindowsService的构造函数或者重写的start()函数里面也是不行的。
...全文
266 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
baidu_28726667 2019-11-29
  • 打赏
  • 举报
回复
引用 1 楼 donwmufromdying 的回复:
QTimer * pQTimer = new QTimer(&NewCustomFunction); 这里别指定parent,改成QTimer * pQTimer = new QTimer(nullptr); 然后,把该timer QThread::moveToThread(你用该timer的线程);
这种需要通过connect绑定对象吧,但是我需要的函数都不在类里面. 难道都要封装吗...
donwmufromdying 2019-11-27
  • 打赏
  • 举报
回复
QTimer * pQTimer = new QTimer(&NewCustomFunction); 这里别指定parent,改成QTimer * pQTimer = new QTimer(nullptr); 然后,把该timer QThread::moveToThread(你用该timer的线程);

21,489

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧