我在基于QML的UI上工作,其中一些元素在C++插件中实现。 在WinXP 32bit和Win7 32bit中一切正常。上周我得到了新的带有Win7 64位的笔记本电脑,并且我的代码在那里无法正常工作。启动应用程序几秒钟后表现很好,但突然停止重新绘制。 QML启动的事件和对QDeclarativeItem :: update()的插件调用都不起作用。在插件中,我100%肯定update()被调用,但是我知道,调用重写QGraphicsItem :: paint()不会按预期发生。当窗口变焦/失焦时,视图只会被重新绘制。没有在64位Win7中重绘QML视图(忽略QDeclarativeItem中的update())
我已经快速验证我的应用程序在运行Win7的桌面上,并没有问题。这导致我怀疑Windows 7如何请求我的笔记本电脑和其他计算机上的窗口更新有一些不同,但是我现在无法找出差异。
有人能帮我理解那里发生了什么吗?
在此先感谢!
p.s.不幸的是,我的原始模型没有出现同样的问题,我不能共享生产代码。如果在找到实际解决方案之前,我会找到一种在原型中重现此问题的方法,我会发布它。
如果您的模型不能重现问题,则表明基本思路是确定的,并且确实存在其他问题。您是否可以对生产代码进行更多的修剪/删除操作,仅用于您自己的测试目的,试图缩小导致问题发生的区域? –
好的,经过一段时间的休息后,我又回到了这个项目,问题依然存在。 我认为会发生的是,Qt的内部循环负责图形场景更新在某些时候被破坏,并在Windows上为外部请求(如WM_SETFOCUS和WM_KILLFOCUS)提供外部请求时退出以响应内部的update()请求。我真的需要Trolls的意见,因为调试QGraphicsScene的想法让我感到担忧:)问题不容易再现 - 有时需要数小时才能开始。 –