各位QT大侠: QT多线程编程的时候,怎么把次线程处理好的数据实时的显示到ui上去?
我的主线程就一个MainWindow,里面由一个TableWidget,怎么把我的次线程里面的数据实时显示到这个TableWidget上?次线程主要完成从另外一个计算机接...
我的主线程就一个MainWindow,里面由一个TableWidget,怎么把我的次线程里面的数据实时显示到这个TableWidget上?次线程主要完成从另外一个计算机接收UDP数据,并完成解析。
展开
展开全部
Qt上要求界面处理一般需要在主线程中完成。
所以最好把次线程中的数据缓冲区放到主线程中:
1、一种方式可以进行数据拷贝,但肯定效率低了。
2、另一种方式是直接将数据缓冲区放到主线程中,然后在主线程中处理读取数据槽。但这样可能主线程压力大,机器配置不能太低。
3、直接在主线程中访问次线程的数据并刷新界面,不过这处理起来复杂(需要手工同步),容易出错。
4、将TableWidget指针传入次线程中,直接在次线程中对其进行操作并发送刷新信号。这种方式未经验证,感觉可能性不大:一方面指针容易走空,另一方面就是前面说的限制在主线程中对接面进行处理。不过所说的“处理”可能并不包括刷新数据吧。
期待楼主进行验证,并展示结果。(或者楼主可以将UDP试验项目发送给我,让我试试,QQ:956693152,谢谢!)
所以最好把次线程中的数据缓冲区放到主线程中:
1、一种方式可以进行数据拷贝,但肯定效率低了。
2、另一种方式是直接将数据缓冲区放到主线程中,然后在主线程中处理读取数据槽。但这样可能主线程压力大,机器配置不能太低。
3、直接在主线程中访问次线程的数据并刷新界面,不过这处理起来复杂(需要手工同步),容易出错。
4、将TableWidget指针传入次线程中,直接在次线程中对其进行操作并发送刷新信号。这种方式未经验证,感觉可能性不大:一方面指针容易走空,另一方面就是前面说的限制在主线程中对接面进行处理。不过所说的“处理”可能并不包括刷新数据吧。
期待楼主进行验证,并展示结果。(或者楼主可以将UDP试验项目发送给我,让我试试,QQ:956693152,谢谢!)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询