2013-02-25 50 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