1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QFONTCOMBOBOX_H
5#define QFONTCOMBOBOX_H
6
7#include <QtWidgets/qtwidgetsglobal.h>
8#include <QtWidgets/qcombobox.h>
9#include <QtGui/qfontdatabase.h>
10
11QT_REQUIRE_CONFIG(fontcombobox);
12
13QT_BEGIN_NAMESPACE
14
15class QFontComboBoxPrivate;
16
17class Q_WIDGETS_EXPORT QFontComboBox : public QComboBox
18{
19 Q_OBJECT
20 Q_PROPERTY(QFontDatabase::WritingSystem writingSystem READ writingSystem WRITE setWritingSystem)
21 Q_PROPERTY(FontFilters fontFilters READ fontFilters WRITE setFontFilters)
22 Q_PROPERTY(QFont currentFont READ currentFont WRITE setCurrentFont NOTIFY currentFontChanged)
23
24public:
25 explicit QFontComboBox(QWidget *parent = nullptr);
26 ~QFontComboBox();
27
28 void setWritingSystem(QFontDatabase::WritingSystem);
29 QFontDatabase::WritingSystem writingSystem() const;
30
31 enum FontFilter {
32 AllFonts = 0,
33 ScalableFonts = 0x1,
34 NonScalableFonts = 0x2,
35 MonospacedFonts = 0x4,
36 ProportionalFonts = 0x8
37 };
38 Q_DECLARE_FLAGS(FontFilters, FontFilter)
39 Q_FLAG(FontFilters)
40
41 void setFontFilters(FontFilters filters);
42 FontFilters fontFilters() const;
43
44 QFont currentFont() const;
45 QSize sizeHint() const override;
46
47 void setSampleTextForSystem(QFontDatabase::WritingSystem writingSystem, const QString &sampleText);
48 QString sampleTextForSystem(QFontDatabase::WritingSystem writingSystem) const;
49
50 void setSampleTextForFont(const QString &fontFamily, const QString &sampleText);
51 QString sampleTextForFont(const QString &fontFamily) const;
52
53 void setDisplayFont(const QString &fontFamily, const QFont &font);
54 std::optional<QFont> displayFont(const QString &fontFamily) const;
55
56public Q_SLOTS:
57 void setCurrentFont(const QFont &f);
58
59Q_SIGNALS:
60 void currentFontChanged(const QFont &f);
61
62protected:
63 bool event(QEvent *e) override;
64
65private:
66 Q_DISABLE_COPY(QFontComboBox)
67 Q_DECLARE_PRIVATE(QFontComboBox)
68 Q_PRIVATE_SLOT(d_func(), void _q_currentChanged(const QString &))
69 Q_PRIVATE_SLOT(d_func(), void _q_updateModel())
70};
71
72Q_DECLARE_OPERATORS_FOR_FLAGS(QFontComboBox::FontFilters)
73
74QT_END_NAMESPACE
75
76#endif
77

source code of qtbase/src/widgets/widgets/qfontcombobox.h