forked from qt-creator/qt-creator
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:
committed by
Henning Gründl
parent
1fb1e829ee
commit
f726b0d90b
@@ -546,6 +546,41 @@ QLinearGradient StyleHelper::statusBarGradient(const QRect &statusBarRect)
|
||||
return grad;
|
||||
}
|
||||
|
||||
QIcon StyleHelper::getIconFromIconFont(const QString &fontName, const QList<IconFontHelper> ¶meters)
|
||||
{
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user