Qt/C++ 类似于 iOS UIKit Dynamics 的物理引擎

Qt/C++ physics engine similar to iOS UIKit Dynamics

我想知道在Qt中是否有任何工具可以模拟动画的物理运动。我记得我曾经在 iOS 上看到,可以更快地向下拖动面板,并且面板会在屏幕底部弹跳,其强度与拖动的力成正比;我相信它叫做 UIKit Dynamics。像这样:

或者假设我想为我的 UI:

创建这种弹跳效果

此处进度圈经过值在达到新值后略有反弹。这些效果不能仅通过 Qt 动画提供的缓动曲线来完成。

有谁知道是否有办法用 Qt WidgetsQt Quick 创建这些类型的动画?有什么可以与 Qt Animations 集成的东西吗?

每个动画api都有,而且不是"physics engine",叫"easing curves"。它们通常用于模仿物理交互并为原本枯燥无味的动画增添趣味。当然,Qt has them too,最常用的种类繁多,您也可以自己制作。

These effects can't be done just with easing curves Qt animations offer.

看来你根本就没有尝试过。您发布的所有效果示例都可以使用缓动曲线来实现。例如,第二个效果的缓和曲线必须是这样的:

几乎线性上升,直到超过目标,保持片刻,然后缓缓回到目标。

此外,如果您打算制作精美的动画 UI,我建议改用 QML,并远离 QtWidget 堆栈 - QML 速度更快,更容易实现现代 UI 与。小部件不适合它,你可以,但这将是一个乏味的过程。