2016-06-13 115 views
1

我做了一切[直到我知道]動畫的按鈕的背景顏色,但我做不到。這裏是我的嘗試之一:如何在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'來代替。 –

回答

3

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++ –