Простые цветовые заливки QIcons в Qt

Мне нужно создать меню, которое меняет фон QWidget. Я хотел бы поместить QIcon, который представляет выбранный цвет, в QActions, которые заполняют QMenu. Я хотел бы, чтобы мне не приходилось выкладывать Photoshop и рисовать иконки вручную. Можно ли запрограммировать простой значок, который заполнен определенным цветом? Таким образом, я могу иметь произвольное количество QActions при необходимости, и мне не нужно будет делать целую кучу иконок в Photoshop.
\

7

Решение

Вы можете создать QIcon из QPixmap. QPixmap может быть создан с заданным размером, а затем заполнен цветом с помощью «заливки».

Например, чтобы создать красный значок 100×100:

QPixmap pixmap(100,100);
pixmap.fill(QColor("red"));
QIcon redIcon(pixmap);
13

Другие решения

Просто разобрался, как поменять цвет с иконки на любой другой цвет. Следовательно, изображение значка должно состоять из одного сплошного цвета (здесь: «черный»), который можно преобразовать с помощью растрового изображения и его маскирующей способности в другой цвет (например, «красный»):

pixmap = QPixmap(filename)
mask = pixmap.createMaskFromColor(QColor('black'), Qt.MaskOutColor)
pixmap.fill((QColor('red')))
pixmap.setMask(mask)

btNew = QToolButton()
btNew.setIcon(QIcon(pixmap))
6

По вопросам рекламы [email protected]