QIcon HmsUiHelper::createIconFromSvg(const QString& svgFilePath, const QColor& color, int width, int height)
{
QSvgRenderer svgRenderer{ svgFilePath };
QPixmap pixmap{ width, height };
pixmap.fill(Qt::transparent);
QPainter painter{ &pixmap };
painter.setRenderHint(QPainter::Antialiasing);
svgRenderer.render(&painter);
QGraphicsScene scene;
QGraphicsPixmapItem item{ pixmap };
auto* colorizeEffect = new QGraphicsColorizeEffect{};
colorizeEffect->setColor(color);
item.setGraphicsEffect(colorizeEffect);
scene.addItem(&item);
QPixmap resultPixmap{ width, height };
resultPixmap.fill(Qt::transparent);
QPainter resultPainter{ &resultPixmap };
scene.render(&resultPainter);
return QIcon{ resultPixmap };
}
The result demo-code using QGraphicsColorizeEffect.
Thank you musicamante!