Mac 上鼠标事件 QML/Widget 的性能问题

问题描述 投票:0回答:1

最近,我发现我的应用程序在 Mac 上编译时出现问题,在 Windows 平台上我的旧笔记本电脑(旧硬件规格)上无法使用。

当我删除了这么多小部件并消除了大型应用程序的其他部分时,我发现问题出在使用 QQuickWidget 上(也许我错了;我不确定)。

实际上,我有一个 QML,正在通过我的小部件布局上的 QQuickWidget 加载。

我在该布局中还有其他滑块和转盘。

    当我通过鼠标更改滑块和转盘的值(按下鼠标滚轮)时,我的 QML 渲染出现问题(帧率渲染滞后)。
  • 当我通过计时器或代码中的任何内容发出变化的值时,我的 QML 工作正常,没有问题。
所以我不知道为什么像按下或滚轮改变这样的鼠标事件会导致我的 QML(quickwidget)出现一些滞后。有什么问题?我很困惑。 我应该考虑在 Mac 上编译时的某些内容或任何属性吗? (我是 Mac 操作系统新手) [Qt 5.15.2,叮当]

要测试的迷你项目:

https://github.com/SC-One/PerformanceIssueQQuickWidgetOnMac.git

感谢您的帮助。

macos qt qml qquickwidget
1个回答
0
投票

Timer

 应该用于偶尔运行小的离散工作。您的 
Timer
interval: 16
,这意味着它一直在运行,几乎窃取了系统的每一次空闲时间,这可以解释 UI/UX 响应能力差的原因。您确定要这样做吗?如果你想要一个流畅的动画,有很多属性动画,比如你可以使用
NumberAnimation
。另外,为了使 
Flickable
 能够正确运行,理论上,您应该设置 
contentWidth
 和/或 
contentHeight
,以便现在可以计算可滑动范围。

Flickable { contentWidth: row.width Row { id: row /* ... */ } NumberAnimation on contentX { to: 2000 duration: 3000 } }
    
© www.soinside.com 2019 - 2024. All rights reserved.