C++ Qt中的简单颜色填充QIcons

C++ Qt中的简单颜色填充QIcons,c++,qt,qmenu,qicon,C++,Qt,Qmenu,Qicon,我需要创建一个菜单来改变QWidget的背景。我想在填充QMenu的QActions中放置一个代表所选颜色的QIcon。我希望不必弹出Photoshop并手动绘制图标。是否可以编程一个简单的图标,用某种颜色填充?这样,如果需要的话,我可以有任意数量的QAction,而且我不必在Photoshop中制作一大堆图标。 \您可以从QPixmap构建QIcon。QPixmap可以使用给定的大小构建,然后使用“填充”填充颜色 例如,要创建一个红色100x100图标: QPixmap pixmap(100,

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

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

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

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

刚刚知道如何将颜色从图标更改为任何其他颜色。因此,图标的图像必须由一种纯色(此处为“黑色”)组成,可以使用pixmap及其遮罩功能将其转换为另一种颜色(如“红色”):


这将只填充图像的透明部分,对吗?我的意思是,这能用颜色填充QIcon的透明部分吗?恐怕我不明白。这个代码创建了一个全新的图标,它是一个实体的红场。虽然CytMeaskFaseCu饰e(QueLead)、QT.MaskCu色英)对C++来说是很好的,但是这不是有效的C++代码。我想编辑它,但是评论家拒绝了它,原因我不知道。除此之外,解决方案在我移植到C++之后起作用。我认为你是对的,我没有意识到这个问题与C++有关,但我也认为它不是要改变已经存在的答案那么多…我不知道你的代码是否稳定,所以我自己不能接受。我想,你应该自己回答!谢谢你的提示。
pixmap = QPixmap(filename)
mask = pixmap.createMaskFromColor(QColor('black'), Qt.MaskOutColor)
pixmap.fill((QColor('red')))
pixmap.setMask(mask)

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