社区
Qt
帖子详情
关于QGraphicsItem刷新的问题
dinjay
2012-06-28 05:46:15
我在一个QGraphicsScene里添加了很多自定义的矩形item,是继承QGraphicsRectItem的。
现在我通过代码改变item的大小,item->setRect(...),但是为何QGraphicsScene不会刷新呢?
我调用QGraphicsScene的update也好,item的update也好,都不会刷新,我看没有进到item的paintevent函数里。
那正确的刷新方法是什么样的呢?
...全文
1013
5
打赏
收藏
关于QGraphicsItem刷新的问题
我在一个QGraphicsScene里添加了很多自定义的矩形item,是继承QGraphicsRectItem的。 现在我通过代码改变item的大小,item->setRect(...),但是为何QGraphicsScene不会刷新呢? 我调用QGraphicsScene的update也好,item的update也好,都不会刷新,我看没有进到item的paintevent函数里。 那正确的刷新方法是什么样的呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
haltwang
2012-07-01
打赏
举报
回复
另外大神能不能分享下调试方法,感觉C里面的断点调试,到C++里面作用不大啊,调试的时候程序都还没有完全运行,我想看看点了button后响应了哪些函数就看不成。
haltwang
2012-07-01
打赏
举报
回复
你可能理解错setRect的意思了,这里的rect只是item里矩形的大小以及边框信息,和位置信息没有关系。每个QGraphicsItem都有自己的坐标系,这里的rect是相对自己的坐标系的,而他在QGraphhicsScene中的位置是由scenePos决定的。你想弄清楚这个问题可以看看QGraphicsView QGraphicsScene QGraphicsItem的坐标系,以及QGraphicsItem的boundingRect。
xiebin133
2012-06-29
打赏
举报
回复
场景里面是不是把事件给截获了。
tubo_true
2012-06-29
打赏
举报
回复
delete
add
dinjay
2012-06-29
打赏
举报
回复
我debug看了下,原来调用scene的update函数是会进入到item的paint事件里的,但是item改变显示位置为啥只能通过setpos来实现呢?调用setRect没有反映。
关于调用
QGraphicsItem
的update或prepareGeometryChange后界面不自动
刷新
问题
有时在调用
QGraphicsItem
的update或prepareGeometryChange后界面不会自动
刷新
(即item显示状态异常),并且从此以后都不会再自动
刷新
,但是切换窗口后又是可以正常
刷新
。首先,切换窗口可以触发界面
刷新
,说明
刷新
本身是正常的,这里不自动
刷新
就只是没有正确的去触发
刷新
而已。基于上面的流程我们可以发现,如果执行这一系列的操作均是在主线程,那当然没
问题
,因为每一步都是有顺序的。这个分支就直接返回了。这是由于QT的第二个优化,如果传入范围为空,则需要更新全部据场景数据,它就会执行。
关于
QGraphicsItem
update()
刷新
问题
记录
但是,随之而来的出现一个
问题
,网络通信的回包有时会更新
刷新
控件的状态和显示,下面就是调用item的onDeviceStatus,onDeviceStatus里面有update去做界面
刷新
。后面移植到安卓,同样的代码cpu飙到100%,有时候界面
刷新
延迟,没办法,只能改成多线程,不然主线程要
刷新
界面还要处理其他事件,安卓只使用一个核确实承受他不该有的痛苦。将网络通信这一部分放到子线程中,果然,刚刚好界面流畅,操作及时,本来想把所有服务都创建各自线程去跑,想想,算了,到时遇到比我调试的机器还垃圾的再说。
QGraphicsItem
刷新
问题
解决方法
调用Widget的各种重绘方法都无效 解决办法 设置定时器重复调用 //QGraphicsScene *scene=new QGraphicsScene(this); //QGraphicsView *view=new QGraphicsView(scene,this); view->fitInView(scene->sceneRect(),Qt::KeepAspectRati...
GUI主线程
QGraphicsItem
的Update
刷新
问题
GUI主线程
QGraphicsItem
的Update
刷新
问题
QGraphicsView/QGraphicsScene/
QGraphicsItem
刷新
问题
添加图元后,其他图元位置有变化,也正确计算了包含新增图元的位置,在调用QGraphicsView的invalidateScene()和QGraphicsScene的invalidate()后,只有新增的图元进行绘制(paint()),其余图元未进行绘制(paint())。 比较有意思的是,使用快捷键添加图元就没有
问题
,而使用工具栏添加就有
问题
;两者所走的逻辑完全一致。 当前 以下为使用工具栏出...
Qt
21,503
社区成员
26,693
社区内容
发帖
与我相关
我的任务
Qt
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
复制链接
扫一扫
分享
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章