首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >64位Win7中没有重绘QML视图(忽略QDeclarativeItem中的update())

64位Win7中没有重绘QML视图(忽略QDeclarativeItem中的update())
EN

Stack Overflow用户
提问于 2011-10-03 20:45:44
回答 2查看 1.3K关注 0票数 1

我在一个基于QML的UI上工作,其中一些元素是在C++插件中实现的。到目前为止,在WinXP 32位和Win7 32位中一切运行正常。上周我买了一台安装了64位Win7的笔记本电脑,我的代码在那里不能正常工作。启动后几秒钟,应用程序运行良好,但随后视图突然停止重绘。无论是QML发起的事件,还是对QDeclarativeItem::update()的插件调用都不起作用。在插件中,我100%确定调用了update(),但是我知道,对覆盖的QGraphicsItem::paint()的调用不会像预期的那样发生。只有当窗口获得/失去焦点时,视图才会被重绘。

我已经在运行Win7的台式机上快速验证了我的应用程序,并且没有任何问题。这导致我怀疑Windows7在我的笔记本电脑和其他电脑上请求窗口更新的方式有所不同,但我现在无法弄清楚其中的区别。

有没有人能帮我了解一下那里发生了什么?

提前感谢!

附注:不幸的是,我的原始模型没有表现出同样的问题,并且我不能分享产品代码。如果在找到实际的解决方案之前,我能找到在原型中重现这个问题的方法,我会把它贴出来。

EN

回答 2

Stack Overflow用户

发布于 2012-03-26 20:28:02

在update()调用之后添加一个qapp->processEvents(),它可能会起作用。

(我遇到过类似的问题,但它在所有平台上都会发生,希望这个解决方案能为您工作)

票数 0
EN

Stack Overflow用户

发布于 2014-02-27 21:52:56

我的问题的答案在于我最初在问题描述中忽略的一些东西。从非Qt线程(当然不是GUI线程)调用QDeclarativeItem::update()函数。我通过Qt事件循环重新路由了调用,问题就解决了。

我当时在Qt4.7/4.8上,不能说它在Qt5.x中会有什么表现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7635149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档