QT遇到的一些坑 信号槽 多线程 GBK

1、信号槽

想使用信号槽,需要继承public QWidget类

并在类中定义宏Q_OBJECT

2、GBK编码

QT的中文是UTF8编码且会自动把gbk编码转换成utf8编码

3、多线程

QT的线程是异步模型,需要把socket传到线程中,这个socket才能在子线程运行。

QT的线程模型和MFC不一样,是异步可重入模型,通过信号和槽来通信。之前很多同步的操作不太好实现。槽函数不能延时,循环sleep10ms发送数据槽函数会在最后一起发而不是单次。串口和网口只能在本线程调用,没有全局指针。

在qt中使用多线程,以前的方法创建一个自己的thread的类,继承与QThread,然后重写run方法,从而实现多线程。交新版本的qt出现了movetoThread方法实现多线程。该方法由于使用起来比较灵活,得到广发应用。

首先要创建一个继承QObject的类(myobject),然后new一个Qthread,并把创建的myobject类movetothread到创建好的子线程中,然后start子线程,这样就实现了一个子线程。主线程通过发送信号,调用myobject中的方法,从而实现在子线程中的计算。

run()

该案例中,WorkerThread 存在于实例化它的旧线程中,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值