From 98c2260c3b928868e4b682b0300074b3d70849ec Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Thu, 25 Nov 2021 12:27:50 +0100 Subject: Add QFontComboBox::setDisplayFont Allows changing the font used to display a font family [ChangeLog][QtWidgets][QFontComboBox] Added the setDisplayFont() function, in order to be able to control the font used to render the font name and sample text (when previewing the fonts). Change-Id: I94bfef43142c5346237e3069449bd19dbacb7420 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/widgets/widgets/qfontcombobox.cpp | 25 +++++++++++++++++++++++++ src/widgets/widgets/qfontcombobox.h | 3 +++ 2 files changed, 28 insertions(+) diff --git a/src/widgets/widgets/qfontcombobox.cpp b/src/widgets/widgets/qfontcombobox.cpp index b3698890af..4a9d510177 100644 --- a/src/widgets/widgets/qfontcombobox.cpp +++ b/src/widgets/widgets/qfontcombobox.cpp @@ -187,6 +187,7 @@ public: QFont currentFont; QHash sampleTextForWritingSystem; QHash sampleTextForFontFamily; + QHash displayFontForFontFamily; void _q_updateModel(); void _q_currentChanged(const QString &); @@ -238,6 +239,8 @@ void QFontFamilyDelegate::paint(QPainter *painter, if (hasLatin) font = font2; + font = comboPrivate->displayFontForFontFamily.value(text, font); + QRect r = option.rect; if (option.state & QStyle::State_Selected) { @@ -617,6 +620,28 @@ QString QFontComboBox::sampleTextForFont(const QString &fontFamily) const return d->sampleTextForFontFamily.value(fontFamily); } +/*! + Sets the \a font to be used to display a given \a fontFamily (when the combo is open). + + \since 6.3 +*/ +void QFontComboBox::setDisplayFont(const QString &fontFamily, const QFont &font) +{ + Q_D(QFontComboBox); + d->displayFontForFontFamily[fontFamily] = font; +} + +/*! + Returns the font (if set) to be used to display a given \a fontFamily (when the combo is open). + + \since 6.3 +*/ +std::optional QFontComboBox::displayFont(const QString &fontFamily) const +{ + Q_D(const QFontComboBox); + return d->displayFontForFontFamily.value(fontFamily, {}); +} + QT_END_NAMESPACE #include "qfontcombobox.moc" diff --git a/src/widgets/widgets/qfontcombobox.h b/src/widgets/widgets/qfontcombobox.h index 1eaa58ce0e..18b642680a 100644 --- a/src/widgets/widgets/qfontcombobox.h +++ b/src/widgets/widgets/qfontcombobox.h @@ -86,6 +86,9 @@ public: void setSampleTextForFont(const QString &fontFamily, const QString &sampleText); QString sampleTextForFont(const QString &fontFamily) const; + void setDisplayFont(const QString &fontFamily, const QFont &font); + std::optional displayFont(const QString &fontFamily) const; + public Q_SLOTS: void setCurrentFont(const QFont &f); -- cgit v1.2.3