Мне нужно создать меню, которое меняет фон QWidget. Я хотел бы поместить QIcon, который представляет выбранный цвет, в QActions, которые заполняют QMenu. Я хотел бы, чтобы мне не приходилось выкладывать Photoshop и рисовать иконки вручную. Можно ли запрограммировать простой значок, который заполнен определенным цветом? Таким образом, я могу иметь произвольное количество QActions при необходимости, и мне не нужно будет делать целую кучу иконок в Photoshop.
\
Вы можете создать QIcon из QPixmap. QPixmap может быть создан с заданным размером, а затем заполнен цветом с помощью «заливки».
Например, чтобы создать красный значок 100×100:
QPixmap pixmap(100,100);
pixmap.fill(QColor("red"));
QIcon redIcon(pixmap);
Просто разобрался, как поменять цвет с иконки на любой другой цвет. Следовательно, изображение значка должно состоять из одного сплошного цвета (здесь: «черный»), который можно преобразовать с помощью растрового изображения и его маскирующей способности в другой цвет (например, «красный»):
pixmap = QPixmap(filename)
mask = pixmap.createMaskFromColor(QColor('black'), Qt.MaskOutColor)
pixmap.fill((QColor('red')))
pixmap.setMask(mask)
btNew = QToolButton()
btNew.setIcon(QIcon(pixmap))