Qt之线程QThread
来源:互联网 发布:如何优化英语教学 编辑:程序博客网 时间:2024/06/10 09:44
如何使函数运行在线程中?
Qt帮助给出了两种方法。
1. 继承QThread, 重载run()函数,run()函数即在线程中执行。
class WorkerThread : public QThread { Q_OBJECT void run() Q_DECL_OVERRIDE { QString result; /* ... here is the expensive or blocking operation ... */ emit resultReady(result); } signals: void resultReady(const QString &s); }; void MyObject::startWorkInAThread() { WorkerThread *workerThread = new WorkerThread(this); connect(workerThread, &WorkerThread::resultReady, this, &MyObject::handleResults); connect(workerThread, &WorkerThread::finished, workerThread, &QObject::deleteLater); workerThread->start(); }
2. 使用moveToThread, 需要借助一个QObject的子类,在该类中定义信号和槽函数,moveToThread, 该槽函数即在次线程中执行。
class Worker : public QObject { Q_OBJECT public slots: void doWork(const QString ¶meter) { QString result; /* ... here is the expensive or blocking operation ... */ emit resultReady(result); } signals: void resultReady(const QString &result); }; class Controller : public QObject { Q_OBJECT QThread workerThread; public: Controller() { Worker *worker = new Worker; worker->moveToThread(&workerThread); connect(&workerThread, &QThread::finished, worker, &QObject::deleteLater); connect(this, &Controller::operate, worker, &Worker::doWork); connect(worker, &Worker::resultReady, this, &Controller::handleResults); workerThread.start(); } ~Controller() { workerThread.quit(); workerThread.wait(); } public slots: void handleResults(const QString &); signals: void operate(const QString &); };
0 0
- Qt之线程QThread
- Qt之线程(QThread)
- Qt之线程(QThread)
- Qt之线程(QThread)
- qt线程类---QThread
- Qt线程QThread简析
- Qt线程(QThread)
- QT中的线程QThread
- Qt之QThread详解
- Qt之QThread
- Qt之QThread用法
- 线程之QThread
- qt线程 qthread(转)
- QT——QThread线程
- QThread QT线程使用案例
- Qt之多线程QThread简介
- Qt::QThread->线程的使用
- QT之深入理解QThread
- 入门级爬虫 抓取豆瓣top250 的电影信息
- JAR、WAR、EAR的使用和区别
- C语言将十进制整数输出为八进制和十六进制
- iOS Socket 编程
- Asp.Net MVC学习总结(二)——控制器与动作(Controller And Action)
- Qt之线程QThread
- 多线程的使用
- C++基础2:结构体、联合体、枚举
- 代理服务器工作原理
- 55:Valid Parentheses
- JavaScript闭包的理解
- Heavy Transportation POJ
- int 单个字符转
- jdk源码之String