gpt4 book ai didi

c++ - QPropertyAnimation 中支持哪些属性被动画化?

转载 作者:太空狗 更新时间:2023-10-29 23:02:06 26 4
gpt4 key购买 nike

我正在学习 Qt,认为动画按钮很重要。我正在尝试创建我的自定义 QPushButton 类,它重新实现鼠标进入和离开事件并使用 qt 动画框架。 QPropertyAnimation

QPropertyAnimation(QObject * target, const QByteArray & propertyName, QObject * parent = 0)

所以如果我想动画化它的大小,我可以使用“geometry”作为 propertyName但是当我想同时更改文本颜色背景颜色 时,这让我感到困惑...我应该把什么作为propertyName?在任何地方搜索,但没有找到任何关于我可以设置动画的属性以及它在 propertyName 构造函数参数中如何命名的文档。

预期的答案将是所有可能的参数,例如 QtCore.QPropertyAnimation(self,"geometry") (pyqt4/pyside) 中的“geometry”

我使用 PyQt4,但我也可以使用 PySide 和 Qt4.8 C++,所以在这些库中的任何一个中回答都可以(我会全部学习)

编辑:

我找到了 this one使用“颜色”并更改整个按钮颜色(背景颜色),仍然不知道如何使文本可见并为文本颜色设置动画

最佳答案

文本颜色和背景颜色不是 Qt 属性。因此,您不能使用 QPropertyAnimation 为它们设置动画。

您可以在官方文档的相应部分找到QWidget 属性列表:http://doc.qt.io/qt-4.8/qwidget.html

如果您想动态更改某些任意属性,例如文本颜色,您可以启动一个QTimer 并在连接到计时器timeout 信号的插槽中执行必要的操作。


--upd--

在 C++ Qt 中,您不能为“颜色”属性设置动画,因为没有这样的属性。如果您尝试这样做,您将在控制台中收到以下警告:

QPropertyAnimation: you're trying to animate a non-existing property color of your QObject


作为 QVariantAnimation的子类, QPropertyAnimation不支持所有的 QVariant属性类型。列出了支持的类型 in the doc:

Not all QVariant types are supported. Below is a list of currently supported QVariant types:

Int
UInt
Double
Float
QLine
QLineF
QPoint
QPointF
QSize
QSizeF
QRect
QRectF
QColor

如果你想为其他类型的属性设置动画,你应该为它注册一个插值器函数:

QVariant cursorInterpolator(const QCursor &start, const QCursor &end, qreal progress)
{
...
return QCursor(...);
}
...
qRegisterAnimationInterpolator<QCursor>(cursorInterpolator);

关于c++ - QPropertyAnimation 中支持哪些属性被动画化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29654397/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com