我需要创建一个能够改变QWidget背景的菜单。我希望在填充QMenu的QActions中放置代表所选颜色的QIcon。我不想使用Photoshop手动绘制这些图标。是否可以编写一个简单的图标并填充某种颜色?这样,如果需要任意数量的QActions,我就可以有了它,并且不用在Photoshop中制作大量的图标。
您可以使用 QPixmap 构造 QIcon。QPixmap 可以使用 'fill' 方法,填充指定大小并具有特定颜色的图像。
例如,要创建一个红色的 100x100 图标:
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))