Qt 创建一个线程执行某个函数
2015-07-09 11:08
357 查看
某个函数需要用线程执行时,创建一个一次性的线程,在线程里面调用该函数。
头文件
cpp
头文件
class TaskThread : public QThread { Q_OBJECT public: TaskThread(QObject *parent = 0); ~TaskThread(); void setFunction(QObject* obj,QString function,QVariant value=NULL); signals: void taskEnd(); public: void run(); private: int m_index; QObject* m_obj; QString m_function; QVariant m_value; QThread *m_Thread; };
cpp
TaskThread::TaskThread(QObject *parent) { m_index = -1; connect(this,SIGNAL(taskEnd()),this,SLOT(deleteLater())); } TaskThread::~TaskThread() { } void TaskThread::setFunction(QObject* obj,QString function,QVariant value) { while(m_index != -1) { QThread::msleep(10); } m_index = 1; m_obj = obj; m_function = function; m_value = value; m_Thread = m_obj->thread(); m_obj->moveToThread(this); start(); } void TaskThread::run() { QByteArray ba = m_function.toLatin1(); const char* ch=ba.constData(); QMetaObject::invokeMethod(m_obj,ch,Q_ARG(QVariant, m_value)); m_index = -1; m_obj->moveToThread(m_Thread); emit taskEnd(); }
相关文章推荐
- ROS学习手记 - 6 使用ROS中的工具:rqt_console & roslaunch & rosed
- OSGEarth嵌入Qt的QGraphicsView框架(二)
- OSGEarth嵌入Qt的QGraphicsView框架(一)
- qt5.5 windows
- vs2008环境下,编写qt定时器小例子。
- unbuntu 12.04新安装qt5.4配置及问题解决。
- unbuntu 12.04新安装qt5.4配置kit
- QThread的一种用法(转载)
- ubuntu 12.04安装qt5.4 编译程序cannot find -lGL问题
- 关于qt的http上传和下载资源的进度条显示
- Qt程序"没有找到mingwm10.dll"的解决办法
- QT + PCL
- QT 随笔
- [Qt] Qt时间 - QDateTime
- Qt设置窗体标题栏隐藏和窗口是否有任务栏图标
- qt 正则表达式
- qt 坐标 pos globalPos()
- QT写入文本文件
- Qt初学者,一路磕绊,将两天来心得发一下聊以遣怀。
- Qt简单坐标绘制