QT多线程的使用
程序员文章站
2024-02-04 19:15:59
今天给大家介绍三种QT里面使用多线程的方法 1、继承QThread并且重写run方法来实现多线程 2、使用movetothread方法实现多线程,该类一定要继承QObject 3、使用c++11的thread来实现多线程 4、来看一看这三种多线程如何使用 QT里面三种多线程介绍到这里 ......
今天给大家介绍三种qt里面使用多线程的方法
1、继承qthread并且重写run方法来实现多线程
#ifndef myqthread_h
#define myqthread_h
#include <qthread>
class myqthread : public qthread
{
public:
myqthread();
void run();
};
#endif // myqthread_h
2、使用movetothread方法实现多线程,该类一定要继承qobject
#ifndef myobjectthread_h
#define myobjectthread_h
#include <qobject>
class myobjectthread : public qobject
{
q_object
public:
explicit myobjectthread(qobject *parent = nullptr);
signals:
public slots:
void showid();
};
#endif // myobjectthread_h
3、使用c++11的thread来实现多线程
#ifndef myc11thread_h
#define myc11thread_h
class myc11thread
{
public:
myc11thread();
void showc11id(int i);
};
#endif // myc11thread_h
4、来看一看这三种多线程如何使用
void showid(int i)
{
qdebug() << "全局函数的现成id" << qthread::currentthreadid() << "i:" << i;
}
mainwindow::mainwindow(qwidget *parent) :
qmainwindow(parent),
ui(new ui::mainwindow)
{
ui->setupui(this);
//qthread重写runfangfa
tmpmyqthread = new myqthread();
tmpmyqthread->start();
//用movetothread,但是这个类要继承object
qthread *th = new qthread;
tmpmyobject = new myobjectthread();
//把tmpmyobject这个类的对象放到线程中
tmpmyobject->movetothread(th);
//通过信号槽的方法,把槽函数运行在线程中
connect(th,signal(started()),tmpmyobject,slot(showid()));
th->start();
//c11原始的thread把全局函数初始化到线程
std::thread th1(showid,2);
th1.detach();
//c11原始thread把类的函数初始化到线程运行
tmpmyc11 = new myc11thread();
std::thread th2(&myc11thread::showc11id,tmpmyc11,2);
th2.detach();
qdebug() << "mainthread:" << qthread::currentthreadid();
}
qt里面三种多线程介绍到这里
上一篇: python进行TCP端口扫描的实现
下一篇: python爬虫超时的处理的实例
推荐阅读
-
QT多线程的使用
-
Raphael库的使用 博客分类: js JavaScript
-
Flex的定时任务。 博客分类: Flex Flex多线程
-
使用Aspose.PDF for .NET将PDF转换为HTML格式示例解读(6)——在style.css中设置字体的URL前缀
-
Flex的定时任务。 博客分类: Flex Flex多线程
-
Raphael库的使用 博客分类: js JavaScript
-
Angular2下使用pdf插件的方法详解
-
关于Java代码在应用层获取Android系统属性的使用实例
-
基于.net ,使用几种常见的NoSQL数据库
-
使用python编写简单的小程序编译成exe跑在win10上