qt中画线的问题

super_max 2009-05-14 05:57:02
我的程序是在QT4中画线.
目前线可画出.是用QPainter.drawLine(QPoint1,QPoint2)
样的函数画出的.画完后我调用update();函数来更新.
可现在我有个问题是,我的线有成千上万条.
如果一次性画完了,最后调用update()更新这应该没问题.
现在的问题是我每画一条线都需要马上显示出来.如果一直调用
update();将全部窗体重画恐怕不行,想问大家谁知道有啥其他办法?
谢谢.
...全文
1114 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouxingyu896 2009-05-28
  • 打赏
  • 举报
回复

xempo 2009-05-27
  • 打赏
  • 举报
回复
另发一条线程,以作画图之用。线程优先度用最低。
sytu_hzj 2009-05-27
  • 打赏
  • 举报
回复
QT4画线必须在paintEvent中进行啊?有什么办法不在paintEvent中执行吗?
sytu_hzj 2009-05-27
  • 打赏
  • 举报
回复
受教了
lee51525125 2009-05-27
  • 打赏
  • 举报
回复
放心update()没问题的
welling007 2009-05-24
  • 打赏
  • 举报
回复
再加一点:就算你马上画N条线出来,再马上擦除,眼睛也不一定反映得过来吧,所以我觉得有大量画图任务时交给update()应该不会错,还有听说那个QCanvas组件处理这些多动态的图画比QWidget更轻量.
welling007 2009-05-24
  • 打赏
  • 举报
回复
完全没问题啊,update()和repaint()是不同的,update()在文档里的说法就是Calling update() several times normally results in just one paintEvent() call.
它不会在你调用update()时马上画出线条,并显示,而repaint()就会马上画,这和Java中的处理是一样的,所以不用担心.
WoodZhuo 2009-05-21
  • 打赏
  • 举报
回复
C++ GUI Programming with Qt 4, Second Edition里有讲:
If update() is called multiple times, Qt compresses the consecutive paint events into a single paint event to avoid flicker
应该没问题吧(猜的)
super_max 2009-05-18
  • 打赏
  • 举报
回复
恩,我的画线是用在工业控制上的,是机械一个动作,然后才画一条线.机械大概最快一分钟2000个动作.就是说一分钟画2000条线.那样如果用UPDATA函数则一分钟要调用2000次UPDATE,不知道计算机是否能承受.呵呵 .因为心里没底,所以才有以上一问.再就是我也是第一次用QT,所以很多入行规则还不清楚.呵呵.需要向大家多学习.
  • 打赏
  • 举报
回复
应该没问题的...放心的..大胆试试
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 super_max 的回复:]
我没试,在写程序.还没写完就这么想.如果有好的办法就不这么写了.
没有就只能这么写了.
[/Quote]

感觉你的需求分析地不合理。

你是不是要求线是一条条显示出来,那么就是说,你的线之间的时间间隔是人眼可以区分的间隔(不然就是没有意义了),
那么也就是说,你只要多次调用update函数而已,有何不可?这里的效率其实是无所谓的,你只是在对于机器来说,很长的时间里重绘一次,有何不可?
super_max 2009-05-15
  • 打赏
  • 举报
回复
每画一条线就UPDATE()一次,应该能画,但我是说效率很低,比如画10万个线条,我画到最后一条时画完了凋用UPDATE()就会把前面的线都重新画一次,其实,我只画了一条,前面的完全可不理.所以我是说不想用UPDATE()这个函数.想问问有其他方法没?
super_max 2009-05-15
  • 打赏
  • 举报
回复
我没试,在写程序.还没写完就这么想.如果有好的办法就不这么写了.
没有就只能这么写了.
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 super_max 的回复:]
每画一条线就UPDATE()一次,应该能画,但我是说效率很低,比如画10万个线条,我画到最后一条时画完了凋用UPDATE()就会把前面的线都重新画一次,其实,我只画了一条,前面的完全可不理.所以我是说不想用UPDATE()这个函数.想问问有其他方法没?
[/Quote]

没测试过这么多条。你试了效果很差?
leyisilu 2009-05-14
  • 打赏
  • 举报
回复
可以画在位图上,然后贴在显示区
  • 打赏
  • 举报
回复
画一条就update。
显示不出来吗?你试了?

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧