Qt — получить имя значка QPushButton

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

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

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

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


person Maxbester    schedule 25.02.2013    source источник
comment
почему бы не установить значок в соответствии с состоянием нажатия? используя QPushButton::ischecked()   -  person nurettin    schedule 25.02.2013
comment
Я пробовал: myButton->setStyleSheet(":checked {image: url(:/img/pause.png);}"); но это не работает.   -  person Maxbester    schedule 25.02.2013


Ответы (2)


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

person Bojan    schedule 25.02.2013
comment
Этот метод не существует для QIcon. - person Maxbester; 25.02.2013
comment
Так и в Qt 4.8, и в 5.0: qt-project.org/doc/ qt-4.8/qicon.html qt-project.org /doc/qt-5.0/qtgui/qicon.html - person Bojan; 25.02.2013
comment
Неважно, функция не работает, Qt накосячил - person IceFire; 30.01.2021

Вместо установки значка на основе состояния QPushButton установите один 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 );
person PrisonMonkeys    schedule 25.02.2013