Причина
Есть несколько проблем с вашим подходом:
Вы задаете имя объекта для действия . Само действие не является стилевым. Она назначена кнопке , и ее имя не передается этой кнопке (поскольку кнопке может быть назначено несколько действий). Таким образом, ваш селектор #CoordinateType
не будет работать, и вы не сможете нацелить эту конкретную кнопку.
Невозможно установить значок QToolButton , используя свойство image , так как ссылка на таблицу стилей сообщает:
Изображение, нарисованное в прямоугольнике содержимого субконтроля .
Если вы хотите установить изображение для кнопки, используйте background-image
. Установка следующей qss в качестве глобальной таблицы стилей работает в некоторой степени, но, опять же, трудно нацелиться на конкретную кнопку QToolBar :
QToolButton {
background-image: url(global.png);
}
QToolButton:checked {
background-image: url(local.png);
}
Решение
Учитывая вышеупомянутые проблемы, я бы решил использовать QIcon :: State вместо таблицы стилей.
Пример * * тысяча сорок-четырь
Вот пример того, как изменить код для достижения этой цели:
Создать иконку и настроить ее
QIcon icon;
icon.addPixmap(QPixmap("global.png"), QIcon::Normal, QIcon::Off);
icon.addPixmap(QPixmap("local.png"), QIcon::Normal, QIcon::On);
Установить значок как pAction
'значок
pAction->setIcon(icon);
Примечание: Возможно, вам придется рассмотреть и другие режимы .