标题:求助Qt绘图效率问题
作者:wangmingxiao
日期:2015-07-20 14:19
内容:
本人想用Qt开发雷达显示界面,在绘制回波时速度太慢;因为开辟了接收UDP数据的线程,每次发送数据加快之后数据就会部分接受不到;发现是Qt在绘图时占用的时间太长,导致数据丢失了。想请教下各位大神有没有什么绘图效率高的方法,并且不影响接收数据线程的,我试了图形视图框架和通用的绘图方法,速度都不行?????感谢各位了。。。。。
#1 [cwc1987 07-20 15:19]
绘图卡界面?但是你开了一个单独的线程接收数据,应该不会丢数据吧?
#2 [firebolt 07-20 15:55]
你需要一个处理udp通讯的线程,还需要一个线程在后台绘制雷达图像到帧缓冲区,前端显示部分还需要一个线程,按帧率将后台帧缓冲区的图像贴到主表面。
#3 回 cwc1987 的帖子 [wangmingxiao 07-20 16:41]
cwc1987:绘图卡界面?但是你开了一个单独的线程接收数据,应该不会丢数据吧? (2015-07-20 15:19)
是开了线程在接收数据,使用的是qt自带的UDPSocket,但是一绘图数据就受不到那么多,发送间隔是3毫秒,是不是使用linux自带的socket不会丢?
#4 回 firebolt 的帖子 [wangmingxiao 07-20 16:46]
firebolt:你需要一个处理udp通讯的线程,还需要一个线程在后台绘制雷达图像到帧缓冲区,前端显示部分还需要一个线程,按帧率将后台帧缓冲区的图像贴到主表面。 (2015-07-20 15:55)
我现在是开了接收udp数据的线程将数据放入一个List的列表,在另外一个线程逐个取出处理。使用的是Qt的视图框架,把每个点迹设置为一个图形项,遇到点迹就增加图形项,主线程负责显示。现在只要显示绘图就会掉数据,发850包数据只能接受到500左右,是不是Qt中的UDP数据接收有问题?要不要换成linux中的网络接收程序?
#5 [wangmingxiao 07-20 19:56]
问题终于解决了,采用Linux系统的网络编程就不会掉数据了,确实是Qt自带的UDP接收程序有问题,我猜测可能是绘图的时候程序就没有去接收UDP数据接收的信号,所以以后大家如果数据量大的话建议不要用Qt封装好的网络函数。谢谢两位回答的同志