13

我需要创建一个更改 QWidget 背景的菜单。我想将代表所选颜色的 QIcon 放入填充 QMenu 的 QActions 中。我不想弹出 Photoshop 并手动绘制图标。是否可以编写一个充满某种颜色的简单图标?这样,如果需要,我可以拥有任意数量的 QAction,而且我不必在 Photoshop 中制作一大堆图标。\

4

2 回答 2

19

您可以从 QPixmap 构造一个 QIcon。QPixmap 可以用给定的大小构建,然后使用“填充”填充颜色。

例如,要创建一个 100x100 的红色图标:

QPixmap pixmap(100,100);
pixmap.fill(QColor("red"));
QIcon redIcon(pixmap);
于 2012-11-12T20:15:49.690 回答
10

刚刚弄清楚如何将颜色从图标更改为任何其他颜色。因此,图标的图像必须由一种纯色(此处为“黑色”)组成,可以使用像素图及其掩蔽能力将其转换为另一种颜色(如“红色”):

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

btNew = QToolButton()
btNew.setIcon(QIcon(pixmap))
于 2016-07-14T08:43:42.130 回答