QT中使用另外的线程运行定时器(不用新建QThread子类)
来源:互联网 发布:校园网络安全教育图 编辑:程序博客网 时间:2024/05/21 17:54
编写QT程序时,时常会需要使用定时器QTimer来执行一些定时任务,但当定时任务执行的时间过长,则会影响整个界面的响应,因此会想到使用另一个工作线程来执行定时器,一般情况下可以选择从QThread派生一个线程类,然后重载run并执行任务逻辑,那下面就介绍一个不用从QThread派生并使用QTimer的例子。
在类定义public中添加
QThread* _TimerThread; QTimer* _WriteTimer; void WriteTimestop();
在private slot中添加
void _onWriteTimeout();
构造函数中添加:
// 使用一个线程,跑定时器 _TimerThread = new QThread; _WriteTimer = new QTimer; // _WriteTimer->setSingleShot(true); //千万不要添加这一行,添加后新线程只运行一下就结束了,造成定时器只会触发一次timeout // 在moveToThread前先启动定时器,不然不在一个线程里,直接调用start会失败 _WriteTimer->start(2000); _WriteTimer->moveToThread(_TimerThread); // 定时器对象和this不在一个线程里面,因此这边指定了连接方式为Qt::DirectConnection,由定时器所在线程直接触发_onVoiceTimeout connect(_WriteTimer, SIGNAL(timeout()), this, SLOT(_onWriteTimeout()), Qt::DirectConnection); // 连接定时器槽,用来停止定时器 connect(this, SIGNAL(WriteTimestop()), _WriteTimer, SLOT(stop())); _TimerThread->start();在析构函数中添加:
emit WriteTimestop(); _TimerThread->quit(); _TimerThread->wait(); delete _WriteTimer; delete _TimerThread;
转载自:http://blog.csdn.net/xwdpepsi/article/details/8607496
0 0
- QT中使用另外的线程运行定时器(不用新建QThread子类)
- QT中使用另外的线程运行定时器
- QT中使用另外的线程运行定时器
- Qt 中线程QThread的简单使用
- Qt线程(QThread)的使用/简介
- Qt::QThread->线程的使用
- QT线程QThread的简单使用实例
- Qt线程(QThread)
- QThread QT线程使用案例
- Qt中利用QThread在线程中同步使用QFtp
- qt线程 qthread(转)
- Qt之线程(QThread)
- Qt之线程(QThread)
- Qt之线程(QThread)
- QThread 的moveToThread 结果并没有在子线程中运行
- qt线程类---QThread
- Qt线程QThread简析
- QT中的线程QThread
- ACE_Singleton简介
- UI基础-基础控件-0324-浏览图片案例最终版与注意事项
- 键码值Keycode对照表
- arguments编辑
- []运算符的本质
- QT中使用另外的线程运行定时器(不用新建QThread子类)
- (传输层)TCP协议
- 数据结构(c++版) 第五章 树和二叉树
- Lua: 给 Redis 用户的入门指导
- <数据结构>线性表.顺序存储结构
- SVN版本控制与分支设置
- MySQL 数据库常用命令小结
- 第十三周项目 5 字符串操作(字符串复制)——完整复制字符串
- GCC和G++的区别