• 13513阅读
  • 5回复

QWidget局部刷新问题 [复制链接]

上一主题 下一主题
离线gordenisgk
 
只看楼主 正序阅读 楼主  发表于: 2009-10-02
最近在研究蚁群算法,想用Qt来做界面,QWiget为蚂蚁活动区域,并能动态显示每个蚂蚁的活动,当然蚂蚁都是用一个点来显示。目前碰到了一些问题,linux平台下不可以使用outofevent设置,只能在paintEvent中画点,paintEvent每次画点都会将Qwidget擦掉,因此我想实现QWidget局部刷新的效果,一次只刷新某个点所在的区域,其他的不变,或者如何设置QWidget重画时不擦除,这样我就可以将原来的点用背景色涂掉?
离线hiti_tony
只看该作者 5楼 发表于: 2009-10-07
up!4 楼!很好很强大
离线318065268
只看该作者 4楼 发表于: 2009-10-05
n个方案:
1、void QWidget::update ( const QRegion & rgn )
这个update本身就能够只跟新指定区域的;
2、使用一种数据类型作为中介:比如二维数组,640x480大小的,数组的每个值代表着像素点的一个状态,paintEvent里面遍历该二维数组画点;所有对你的算法的操作都操作你的二维数组,而不是直接去画;
3、使用QImage类,操作一个图片的单一的像素点,然后用个定时器,不断的让你的图片在label里显示;
4、参考文档主页,examples下,Graphics View下的 Colliding Mice Example。该种方式能够让你的蚂蚁显示的更形象,而不是一个像素点。当然,研究蚁群算法可能不适合,需要的蚂蚁实在太多。

另,研究蚁群算法不需要把它画出来,画出来反而偏离了蚁群算法的本义,体现不出算法的优势,只能让你的计算机很受罪。因为巨大数量的蚂蚁的路径选择最终形成最优路径,我们需要的是最后的路径,或者路径选择演变的过程,画出蚂蚁来没有必要。
Email  rsail@126.com(私人邮箱)
QQ:   318065268
离线cipher1981
只看该作者 3楼 发表于: 2009-10-05
弱弱的问下

“碰撞的小老鼠的例子” 哪里有哦?

呵呵
离线shiroki

只看该作者 2楼 发表于: 2009-10-02
用默认的widget是不行的, 至少要重写paintevent, 在里面实现有选择的绘制, 然后去调repaint时给个重绘范围。
你的这种需求可能用graphicsview更合适一些, 参考碰撞的小老鼠的例子
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线gordenisgk
只看该作者 1楼 发表于: 2009-10-02
版主大人在吗,帮我看一下,谢谢!
快速回复
限100 字节
 
上一个 下一个