16,818
社区成员




1.首先我定义了两个QWidget窗口,并且将它们两个添加到了QStackedWidget
2.我在其中一个QWidget窗口中使用了QSerialPort串口,将串口读取到的数据进行接收处理和实时显示
3.这个数据的显示是实时变化更新的,但是会有卡顿,而且在显示界面点击其他控件也会有所卡顿。
请教一下,会是什么原因造成的
加线程,从子线程读取串口数据,然后通过信号槽显示到界面上就没啥问题
加线程
耗时操作请在线程中执行
界面ui显示是主线程,是一个循环(1),main中的(exce)
你在主线程(1)中创建一个死循环(2)
会导致(1)循环不连续,一直在(2)中执行,结果就是ui卡死
耗时操作会导致ui卡顿就可以理解了吧
一个线程内部必然是顺序执行的,一项操作没跑完,其它操作只能等着。
这和你用不用QStackedWidget没有任何关系。
从道理上来讲,一项操作的执行时间超过20ms就不适宜出现在主线程里。