C++ 要设置动画的QPropertyImation中支持的哪些属性?

C++ 要设置动画的QPropertyImation中支持的哪些属性?,c++,qt,animation,pyqt4,pyside,C++,Qt,Animation,Pyqt4,Pyside,我正在学习Qt,并认为动画按钮的事情是重要的。我试图创建我的自定义QPushButton类,该类重新实现鼠标进入和离开事件,并使用qt动画框架 因此,如果我想设置其大小的动画,我可以使用“几何体”作为propertyName 但是当我想同时改变文本颜色和背景颜色时,我会感到困惑。。。我应该把什么作为propertyName?一直在搜索任何地方,但没有找到任何关于我可以设置动画的属性以及它在propertyNameconstructor参数中如何命名的文档 预期答案是所有可能的参数,如QtCore

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

因此,如果我想设置其大小的动画,我可以使用“几何体”作为propertyName 但是当我想同时改变文本颜色和背景颜色时,我会感到困惑。。。我应该把什么作为
propertyName
?一直在搜索任何地方,但没有找到任何关于我可以设置动画的属性以及它在
propertyName
constructor参数中如何命名的文档

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

我使用PyQT4,但是我也可以使用PyStand和Qt4.8 C++,所以在这些库中的任何答案都可以(将全部学习)< /P> 编辑:


我发现使用“颜色”会改变整个按钮的颜色(背景色),但仍然不知道如何使文本可见并设置文本颜色的动画。因此,您无法使用
QPropertyAnimation
为它们设置动画

您可以在官方文档的相应部分找到
QWidget
属性列表:

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

<>在C++ QT中,不能动画化“颜色”属性,因为没有这样的属性。如果尝试执行此操作,控制台中将显示以下警告:

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

作为
QVariantAnimation
的子类,
QPropertyAnimation
不支持所有
QVariant
属性类型。将列出支持的类型

并非所有QVariant类型都受支持。以下是目前的工作清单 支持的QVariant类型:

Int
UInt
双倍
浮动
QLine
QLineF
QPoint
QPointF
QSize
QSizeF
QRect
QRectF
四色

如果要为其他类型的特性设置动画,应为其注册插值函数:

QVariant cursorInterpolator(const QCursor &start, const QCursor &end, qreal progress)
{
    ...
    return QCursor(...);
}
...
qRegisterAnimationInterpolator<QCursor>(cursorInterpolator);
QVariant游标插入器(常量QCursor&start,常量QCursor&end,qreal progress)
{
...
返回QCursor(…);
}
...
qRegisterAnimationInterpolator(光标Interpolator);
您可以为应用程序的Qt属性系统添加“颜色”。只需添加代码

Q_PROPERTY(QColor color READ color WRITE setColor)
在类小部件中,您希望在类中设置动画并添加这两个方法
color()
setColor()

不要忘记在settter中通过
update()
进行更新。

是的,它不是Qt属性,但我认为在动画框架中它使用了不同类型的属性,因为即使光标是Qt属性,它也无法为“光标”设置动画。毕竟,我可以将哪些可能的值传递给
propertyName
Q_PROPERTY(QColor color READ color WRITE setColor)