2013-02-25 4 views
1

У меня есть два состояния QPushButton. Я хочу связать значок с каждым состоянием.Qt - Получить имя значка QPushButton

Это как кнопки Play | Pause в музыкальных плеерах.

Для этого я хотел бы получить текущее имя значка, чтобы узнать, какой будет следующий значок.

Я мог бы подкласс QPushButton, но это того стоит?

+0

Почему бы не установить значок в соответствии с состоянием нажатия? используя 'QPushButton :: ischecked()' – nurettin

+0

Я попытался: 'myButton-> setStyleSheet (": checked {image: url (:/img/pause.png);} ");' но это не сработает. – Maxbester

ответ

0

Используйте QPushButton :: icon() и QIcon :: name(), чтобы получить имя значка.

+0

Этот метод не существует для [QIcon] (http://qt-project.org/doc/qt-4.8/qicon.html). – Maxbester

+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

+0

Хорошо, прошу прощения, я работаю с Qt 4.7. – Maxbester

7

Вместо установки значка, основываясь на состоянии QPushButton «s, установите один QIcon, который имеет два состояния, Qt будет выбрать правильный значок, если вы используете его с триггерной QPushButton.

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

Смежные вопросы