Как изменить значок QAction на QToolBar, когда отмечен / не отмечен? - PullRequest
0 голосов
/ 07 сентября 2018

Я создал QToolBar:

QToolBar* pQToolbar = new QToolBar();
QAction* pAction = pQToolbar->addAction("CoordinateType");
pAction->setObjectName("CoordinateType");
pAction->setIcon(QIcon("global.png"));
pAction->setCheckable(true);

Затем я попытался установить значок при проверке в таблице стилей:

#CoordinateType {
    image: url(global.png);
}

#CoordinateType:checked {
    image: url(local.png);
}

Но это не работает.

Так, что я должен сделать, чтобы изменить значок, когда кнопка инструмента проверена?

1 Ответ

0 голосов
/ 07 сентября 2018

Причина

Есть несколько проблем с вашим подходом:

  1. Вы задаете имя объекта для действия . Само действие не является стилевым. Она назначена кнопке , и ее имя не передается этой кнопке (поскольку кнопке может быть назначено несколько действий). Таким образом, ваш селектор #CoordinateType не будет работать, и вы не сможете нацелить эту конкретную кнопку.

  2. Невозможно установить значок 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); Примечание: Возможно, вам придется рассмотреть и другие режимы .

...