2013-02-25 51 views
1

我有一個兩狀態QPushButton。我想將圖標關聯到每個狀態。Qt - 獲取QPushButton圖標名稱

這就像音樂播放器中的播放|暫停按鈕。

要做到這一點,我想,以知道下一個圖標來設置將是獲取當前圖標名稱。

我可以繼承QPushButton,但它值得嗎?

+0

爲什麼不按照推狀態設置圖標?使用'QPushButton :: ischecked()' – nurettin 2013-02-25 08:25:16

+0

我試過:'myButton-> setStyleSheet(「:checked {image:url(:/ img/pause.png);}」);'但它不起作用。 – Maxbester 2013-02-25 08:28:17

回答

0

使用QPushButton ::圖標()和QIcon ::名稱()獲取圖標的名稱。

+0

[QIcon](http://qt-project.org/doc/qt-4.8/qicon.html)中不存在此方法。 – Maxbester 2013-02-25 08:32:39

+0

它確實,在這兩個Qt的4.8和5.0: http://qt-project.org/doc/qt-4.8/qicon.html http://qt-project.org/doc/qt-5.0/qtgui/ qicon.html – Bojan 2013-02-25 11:09:09

+0

好的,我很抱歉,我正在使用Qt 4.7。 – Maxbester 2013-02-25 12:29:55

7

而不是設置基礎上,QPushButton的狀態的圖標,設置一個QIcon有兩種狀態,如果你有一個可檢查的QPushButton使用它,QT會選擇正確的圖標。

QIcon icon = QIcon(); 
// 'Off' state corresponds to unchecked state of QPushButton 
icon.addPixmap(QPixmap(":/img/play.png"), QIcon::Normal, QIcon::Off); 
// 'On' state corresponds to checked state of QPushButton 
icon.addPixmap(QPixmap(":/img/pause.png"), QIcon::Normal, QIcon::On); 
QPushButton * button = new QPushButton(); 
button->setIcon(icon); 
button->setCheckable(true); 
+0

完美,謝謝! – Maxbester 2013-02-25 09:09:17