forked from qt-creator/qt-creator
QmlDesigner: Extend icon font support
* Use ADS::IconProvider to make use of font icons * Add support for IconProvider in FloatingWidgetTitlebar * Add support for named font icon entities in QmlDesigner::Theme * Add level of indirection to Constants.qml to be able to parse it from inside C++ * Add color and HighDPI support in stylehelper * Update RichTextEditor * Update icon font and related constants Task-number: QDS-1913 Change-Id: I7212f4dfe480dbb340fd042f59c69b8f5ca7a8e4 Reviewed-by: Aleksei German <aleksei.german@qt.io> Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
committed by
Thomas Hartmann
parent
c2de17b280
commit
a35a9e72d9
@@ -28,6 +28,8 @@
|
||||
#include "theme/theme.h"
|
||||
#include "hostosinfo.h"
|
||||
|
||||
#include <utils/qtcassert.h>
|
||||
|
||||
#include <QPixmapCache>
|
||||
#include <QPainter>
|
||||
#include <QApplication>
|
||||
@@ -543,26 +545,35 @@ QLinearGradient StyleHelper::statusBarGradient(const QRect &statusBarRect)
|
||||
return grad;
|
||||
}
|
||||
|
||||
QPixmap StyleHelper::getIconFromIconFont(const QString &fontName, const QString &iconSymbol, int fontSize, int iconSize)
|
||||
QIcon StyleHelper::getIconFromIconFont(const QString &fontName, const QString &iconSymbol, int fontSize, int iconSize, QColor color)
|
||||
{
|
||||
QFontDatabase a;
|
||||
|
||||
Q_ASSERT(a.hasFamily(fontName));
|
||||
QTC_ASSERT(a.hasFamily(fontName), {});
|
||||
|
||||
if (a.hasFamily(fontName)) {
|
||||
QPixmap icon(iconSize, iconSize);
|
||||
icon.fill(Qt::transparent);
|
||||
QPainter painter(&icon);
|
||||
QFont font(fontName);
|
||||
font.setPixelSize(fontSize);
|
||||
QColor penColor = QApplication::palette("QWidget").color(QPalette::Normal, QPalette::ButtonText);
|
||||
|
||||
painter.save();
|
||||
painter.setPen(penColor);
|
||||
painter.setFont(font);
|
||||
painter.drawText(QRectF(0, 0, iconSize, iconSize), iconSymbol);
|
||||
QIcon icon;
|
||||
QSize size(iconSize, iconSize);
|
||||
|
||||
painter.restore();
|
||||
const int maxDpr = qRound(qApp->devicePixelRatio());
|
||||
for (int dpr = 1; dpr <= maxDpr; dpr++) {
|
||||
QPixmap pixmap(size * dpr);
|
||||
pixmap.setDevicePixelRatio(dpr);
|
||||
pixmap.fill(Qt::transparent);
|
||||
|
||||
QFont font(fontName);
|
||||
font.setPixelSize(fontSize * dpr);
|
||||
|
||||
QPainter painter(&pixmap);
|
||||
painter.save();
|
||||
painter.setPen(color);
|
||||
painter.setFont(font);
|
||||
painter.drawText(QRectF(QPoint(0, 0), size), iconSymbol);
|
||||
painter.restore();
|
||||
|
||||
icon.addPixmap(pixmap);
|
||||
}
|
||||
|
||||
return icon;
|
||||
}
|
||||
@@ -570,6 +581,12 @@ QPixmap StyleHelper::getIconFromIconFont(const QString &fontName, const QString
|
||||
return {};
|
||||
}
|
||||
|
||||
QIcon StyleHelper::getIconFromIconFont(const QString &fontName, const QString &iconSymbol, int fontSize, int iconSize)
|
||||
{
|
||||
QColor penColor = QApplication::palette("QWidget").color(QPalette::Normal, QPalette::ButtonText);
|
||||
return getIconFromIconFont(fontName, iconSymbol, fontSize, iconSize, penColor);
|
||||
}
|
||||
|
||||
QString StyleHelper::dpiSpecificImageFile(const QString &fileName)
|
||||
{
|
||||
// See QIcon::addFile()
|
||||
|
||||
Reference in New Issue
Block a user