QT中使用另外的线程运行定时器
来源:互联网 发布:电脑系统破坏软件 编辑:程序博客网 时间:2024/05/22 04: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); // 在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;
- QT中使用另外的线程运行定时器
- QT中使用另外的线程运行定时器
- QT中使用另外的线程运行定时器(不用新建QThread子类)
- qt中定时器的使用
- QT中定时器的使用
- qt中定时器的使用
- Qt中定时器的使用
- qt中定时器Timer的使用
- qt中定时器Timer的使用
- qt中定时器Timer的使用
- Qt中使用boost 库的另外一种方式
- 在线程中使用定时器的例子!
- QT 定时器的使用
- Qt定时器的使用
- Qt定时器的使用
- Qt 定时器的使用
- QT中定时器使用办法
- Qt中定时器使用办法
- hdu 1222
- Moto XT885使用感受
- DBMS_STATS.GATHER_TABLE_STATS详解
- Spring AOP修改函数返回值
- JavaBean
- QT中使用另外的线程运行定时器
- 跟我一起來研究Java内存管理
- Willlam Shakespeare——6、Death in the family
- 适配器模式
- QQ邮箱默认竟然不保存到“已发送”
- C#编写浏览器小结(一)
- 反射机制(转载学习)
- 1682 GG取数
- Android源代码编译和运行常见错误解决方案