经过一番调查,似乎
QPropertyAnimation
继承自
QVariantAnimation
,后者不支持
QString
作为动画属性。所有支持的属性列表在
这里(Int,UInt,Double,Float,QLine,QLineF,QPoint,QPointF,QSize,QSizeF,QRect,QRectF,QColor)。
因此,您需要对要更改背景颜色的每个小部件进行子类化,并为它们创建自己的属性。
像这样 -
Q_PROPERTY(QColor color READ color WRITE setColor)
在此子类的
setColor
方法中,您应该更改颜色。
以下是
QLabel
的示例:
class AnimatedLabel : public QLabel
{
Q_OBJECT
Q_PROPERTY(QColor color READ color WRITE setColor)
public:
AnimatedLabel(QWidget *parent = 0)
{
}
void setColor (QColor color){
setStyleSheet(QString("background-color: rgb(%1, %2, %3);").arg(color.red()).arg(color.green()).arg(color.blue()));
}
QColor color(){
return Qt::black;
}
};
你所要调用的动画应该更改为:
QPropertyAnimation *animation = new QPropertyAnimation(ui->label, "color");
animation->setDuration(2000);
animation->setStartValue(QColor(0, 0, 0));
animation->setEndValue(QColor(240, 240, 240));
animation->start();
其中ui->label是AnimatedLabel(在表单设计器中将您的QLabel提升为AnimatedLabel。
border-color
添加动画效果?我尝试了两个小时来实现它,但是我找不到任何解决方案!! - Saeed Masoomi