简单的颜色填充QIcons在Qt

jli*_*u83 9 c++ qt qmenu qicon

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

cgm*_*gmb 14

您可以从QPixmap构造QIcon.可以使用给定大小构造QPixmap,然后使用"填充"填充颜色.

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

QPixmap pixmap(100,100);
pixmap.fill(QColor("red"));
QIcon redIcon(pixmap);
Run Code Online (Sandbox Code Playgroud)

  • 恐怕我听不懂。这段代码创建了一个全新的图标,它是一个实心的红色方块。 (2认同)

Hen*_*huy 8

刚想出如何将颜色从图标更改为任何其他颜色.因此,图标的图像必须由一种纯色(此处为"黑色")组成,可以使用像素图将其转换为另一种颜色(如"红色"):

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

btNew = QToolButton()
btNew.setIcon(QIcon(pixmap))
Run Code Online (Sandbox Code Playgroud)

  • 很酷,虽然createMaskFromColor(QColor('transparent'),Qt.MaskInColor)对我来说效果更好 (2认同)
  • 该主题用 C++ 标记,但这不是有效的 C++ 代码。想编辑它,但审稿人以我不知道的原因拒绝了它。除此之外,该解决方案在将其移植到 C++ 后对我有用。 (2认同)