• 12739阅读
  • 13回复

[提问]QGraphicsItem画线消失 [复制链接]

上一主题 下一主题
离线grainbuds
 

只看楼主 倒序阅读 楼主  发表于: 2014-04-24
我有两个类都从QGraphicsItem继承,一个在paint函数中画一个圆,一个在paint函数中根据给定的两点画线
我new了几个它们的对象加入scene中。
结果发现在随意拖拽窗口的时候,画出的圆还在,但线却会莫名消失,有时候只有一段,有时候完全就没有了。
这是怎么回事?
离线theotherone

只看该作者 1楼 发表于: 2014-04-24
代码呢?
屌丝程序猿,努力更屌丝  
博客:http://fearlazy.com
离线grainbuds

只看该作者 2楼 发表于: 2014-04-24
代码见附件,运行后,拉动窗口使窗口宽度变小,拖动滚动条这些操作后线段就消失或部分消失

[attachment=11982]
Draw.rar (3 K) 下载次数:10
离线grainbuds

只看该作者 3楼 发表于: 2014-04-25
哎,没有人知道么
离线thinke365

只看该作者 4楼 发表于: 2014-04-26
楼主搞Qt多久了?
离线彩阳

只看该作者 5楼 发表于: 2014-04-26
似乎线段相对于右边的圆是不变的,想知道你画线的paint代码是怎么写的。
上海Qt开发联盟,热忱地欢迎你的加入!
离线dbzhang800

只看该作者 6楼 发表于: 2014-04-26
估计是你忽略了

void QGraphicsItem::prepareGeometryChange()
离线grainbuds

只看该作者 7楼 发表于: 2014-04-27
回 thinke365 的帖子
thinke365:楼主搞Qt多久了? (2014-04-26 20:36) 

刚接触没多久,断断续续1年
离线grainbuds

只看该作者 8楼 发表于: 2014-04-27
回 彩阳 的帖子
彩阳:似乎线段相对于右边的圆是不变的,想知道你画线的paint代码是怎么写的。 (2014-04-26 22:31) 

上面有代码的,QGraphicsItem以前没用过,最近用了一下发现老是刷新有问题。
离线grainbuds

只看该作者 9楼 发表于: 2014-04-27
回 dbzhang800 的帖子
dbzhang800:估计是你忽略了
void QGraphicsItem::prepareGeometryChange() (2014-04-26 23:34) 

我看看,这个函数的作用是什么
为什么我用QGraphicsItem的时候经常不刷新啊
加上scene->update(repaint)或是view->update(repaint)都没有用
离线grainbuds

只看该作者 10楼 发表于: 2014-04-29
没有人帮忙看看吗
离线dbzhang800

只看该作者 11楼 发表于: 2014-04-29
回 grainbuds 的帖子
grainbuds:没有人帮忙看看吗 (2014-04-29 19:57) 

你还没搞清楚 prepareGeometryChange() 怎么用么?

还是说,用了依然不能解决你的问题?
离线grainbuds

只看该作者 12楼 发表于: 2014-04-29
回 dbzhang800 的帖子
dbzhang800:你还没搞清楚 prepareGeometryChange() 怎么用么?
还是说,用了依然不能解决你的问题? (2014-04-29 22:57) 

确切的说的确没搞清楚怎么用,我在构造函数和paint函数里面都加了,不起作用
我对QGraphicsScene QGraphicsScene和QGraphicsItem的刷新机制不是很了解,以前没用过
能加的update repaint 之类的函数都试了
离线dbzhang800

只看该作者 13楼 发表于: 2014-04-29
乱试通常是不能解决问题的。

话说回来,Qt文档中,关于 prepareGeometryChange() 和 boundingRect() 的部分已经挺详细了,不妨说说那句没搞懂
快速回复
限100 字节
 
上一个 下一个