如何在qt中动画QPushButton的背景颜色?

问题描述:

我做了一切[直到我知道]动画的按钮的背景颜色,但我做不到。这里是我的尝试之一:如何在qt中动画QPushButton的背景颜色?

# I set the style of the button by setstylesheet() 
    animation = QPropertyAnimation(btn, "style",btn) 
    animation.setDuration(1000) 
    animation.setStartValue(QStyle("background-color:blue")) 
    animation.setEndValue(QStyle("background-color:red")) 
    animation.start() 

但是,下面的代码显示了以下错误:

animation.setStartValue(将QStyle( “背景色:蓝”)) 类型错误:PyQt4.QtGui。将QStyle表示C++抽象类和不能被实例化

我还试图设置一个调色板:

color = install_btn.palette() 
    color.setColor(QPalette.Base,QColor(72, 152, 219)) 
    install_btn.setAutoFillBackground(True) 
    install_btn.setPalette(color) 

,然后代替QStyle以上的动画值我写QColor(r,g,b),但同样没有工作,它说:

QPropertyAnimation:你想你的动画的QObject的一个不存在的属性风格

请用你认识的任何语言(C++或Python)来帮助我。但我使用Python。

由于是特殊

+0

可能工作'QStyle'是一个抽象基类,不能被实例化。您的调色板也使用了错误的背景颜色。您应该使用'QPalette.Button'来代替。 –

C++,QT5,但在Qt4的

QGraphicsColorizeEffect *eEffect= new QGraphicsColorizeEffect(btn); 
btn->setGraphicsEffect(eEffect); 
QPropertyAnimation *paAnimation = new QPropertyAnimation(eEffect,"color"); 
paAnimation->setStartValue(QColor(Qt::blue)); 
paAnimation->setEndValue(QColor(Qt::red)); 
paAnimation->setDuration(1000); 
paAnimation->start(); 
+0

谢谢,但它没有工作:(即使没有错误,颜色被改变,但没有动画在里面,你的代码中缺少一些东西吗? –

+0

@AhmadTaha我认为你在将代码翻译成python时犯了一个错误。 – Inline

+0

不,我没有,没有错误+我知道小C++ –