QmlDesigner: Enable modes/states with icon font

Add functionality to use modes and states when generating a QIcon
from a font in StyleHelper

Task-number: QDS-2558
Change-Id: I764e8434a645d0984c6104cd1868fd5b0091d225
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Henning Gruendl
2020-07-13 17:17:39 +02:00
committed by Henning Gründl
parent 1fb1e829ee
commit f726b0d90b
2 changed files with 65 additions and 0 deletions

View File

@@ -546,6 +546,41 @@ QLinearGradient StyleHelper::statusBarGradient(const QRect &statusBarRect)
return grad;
}
QIcon StyleHelper::getIconFromIconFont(const QString &fontName, const QList<IconFontHelper> &parameters)
{
QFontDatabase a;
QTC_ASSERT(a.hasFamily(fontName), {});
if (!a.hasFamily(fontName))
return {};
QIcon icon;
for (const IconFontHelper &p : parameters) {
const int maxDpr = qRound(qApp->devicePixelRatio());
for (int dpr = 1; dpr <= maxDpr; dpr++) {
QPixmap pixmap(p.size() * dpr);
pixmap.setDevicePixelRatio(dpr);
pixmap.fill(Qt::transparent);
QFont font(fontName);
font.setPixelSize(p.size().height());
QPainter painter(&pixmap);
painter.save();
painter.setPen(p.color());
painter.setFont(font);
painter.drawText(QRectF(QPoint(0, 0), p.size()), p.iconSymbol());
painter.restore();
icon.addPixmap(pixmap, p.mode(), p.state());
}
}
return icon;
}
QIcon StyleHelper::getIconFromIconFont(const QString &fontName, const QString &iconSymbol, int fontSize, int iconSize, QColor color)
{
QFontDatabase a;