qt中如何实现多线程? 100

函数A()每隔两秒执行一次,函数B()每隔三秒执行一次,函数C()每隔四秒执行一次,同时每个函数都能控制另外两个函数的开始与停止。该如何实现?因为我是初学者,所以代码越简... 函数A()每隔两秒执行一次,函数B()每隔三秒执行一次,函数C()每隔四秒执行一次,同时每个函数都能控制另外两个函数的开始与停止。该如何实现?
因为我是初学者,所以代码越简洁越少越好,不要出现无关代码。但讲解越详细越通俗易懂越好,最好每一行代码都解释一下。
展开
 我来答
创作者zUzVB1Sl31
2021-08-27 · 编程类资料、英语学习资料
创作者zUzVB1Sl31
采纳数:1331 获赞数:5975

向TA提问 私信TA
展开全部
QT线程是独立的类:

在QT中添加C++类,头文件引用#include <QThread>;类公开,这样写:
class XXXX:public QThread,类里面申明Q_OBJECT,直接写在里面。signals: XXX();这是你的订阅事件名。private:void run();这是run函数;public: int cona=3;这是变量,一定要public。

cpp文件里引用头文件,run函数里面写方法:

void XXXX::run()
{
do
{
msleep(cona);
emit connec();
}while(true);
}

上面就是线程类了。现在我们在窗体中应用,先在头文件申明
头文件private: XXXX *thread1;XXXX *thread2;
构造函数中初始化他们
thread1=new XXXX();
thread1->cona=3;
QObject::connect(thread1,SIGNAL(connec()),this,SLOT(XXX信号1()));
thread2=new XXXX();
thread2->cona=4;
QObject::connect(thread2,SIGNAL(connec()),this,SLOT(XXX信号2()));
XXX信号1()是读A数据,XXX信号2()读B数据。
按钮1的信号槽里写方法同时进行每3秒读A、没4秒读B
thread1->start();
thread2->start();
要结束谁就用 xxxx->terminate();

看明白没?QT可不同与C++,你不熟悉编程环境,是很难理解的。
du瓶邪
2015-07-19 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:2913万
展开全部
你需要加深对网络编程基本概念的理解。
首先server端用于监听的是一个socket,每次有传入连接,就会有一个新的socket描述符产生,与客户端交互就是通过这个socket描述符。
如果使用 QTcpServer,你应该重写 incomingConnection() 函数,该函数可以拿到 socket 描述符,然后你使用自定义事件将这个socket描述符传递给一个线程,在这个线程中使用这个socket描述符来与客户端通信。这就是“通知+多线程”的服务器编程模型,Qt 中天生支持这种模型,很容易实现。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-07-13
展开全部
继承一个多线程类,在run里边写自己的函数,然后就行了
追问
我需要完整的代码,谢谢
追答
代码要自己写,没人会给你
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式