Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qquickmaterialtheme.cpp
Go to the documentation of this file.
1// Copyright (C) 2017 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
6
7#include <QtGui/qpa/qplatformdialoghelper.h>
8#include <QtGui/qfont.h>
9#include <QtGui/qfontdatabase.h>
10#include <QtQuickTemplates2/private/qquicktheme_p.h>
11
13
15{
16 QFont systemFont;
17 QFont buttonFont;
18 QFont toolTipFont;
19 QFont itemViewFont;
20 QFont listViewFont;
21 QFont menuItemFont;
22 QFont editorFont;
23
24 auto defaultFontFamily = QLatin1String("Roboto");
25 if (!QFontDatabase::hasFamily(defaultFontFamily)) {
26 defaultFontFamily = QLatin1String("Noto"); // fallback
27 if (!QFontDatabase::hasFamily(defaultFontFamily))
28 defaultFontFamily = {};
29 }
30
31 if (!defaultFontFamily.isEmpty()) {
32 const QStringList families{defaultFontFamily};
33 systemFont.setFamilies(families);
34 buttonFont.setFamilies(families);
35 toolTipFont.setFamilies(families);
36 itemViewFont.setFamilies(families);
37 listViewFont.setFamilies(families);
38 menuItemFont.setFamilies(families);
39 editorFont.setFamilies(families);
40 }
41
43 systemFont.setPixelSize(dense ? 13 : 14);
44 theme->setFont(QQuickTheme::System, systemFont);
45
46 // https://material.io/guidelines/components/buttons.html#buttons-style
47 buttonFont.setPixelSize(dense ? 13 : 14);
48 buttonFont.setWeight(QFont::Medium);
49 theme->setFont(QQuickTheme::Button, buttonFont);
50 theme->setFont(QQuickTheme::TabBar, buttonFont);
51 theme->setFont(QQuickTheme::ToolBar, buttonFont);
52
53 // https://material.io/guidelines/components/tooltips.html
54 toolTipFont.setPixelSize(dense ? 10 : 14);
55 toolTipFont.setWeight(QFont::Medium);
56 theme->setFont(QQuickTheme::ToolTip, toolTipFont);
57
58 itemViewFont.setPixelSize(dense ? 13 : 14);
59 itemViewFont.setWeight(QFont::Medium);
60 theme->setFont(QQuickTheme::ItemView, itemViewFont);
61
62 // https://material.io/guidelines/components/lists.html#lists-specs
63 listViewFont.setPixelSize(dense ? 13 : 16);
64 theme->setFont(QQuickTheme::ListView, listViewFont);
65
66 menuItemFont.setPixelSize(dense ? 13 : 16);
67 theme->setFont(QQuickTheme::Menu, menuItemFont);
68 theme->setFont(QQuickTheme::MenuBar, menuItemFont);
69 theme->setFont(QQuickTheme::ComboBox, menuItemFont);
70
71 editorFont.setPixelSize(dense ? 13 : 16);
72 theme->setFont(QQuickTheme::TextArea, editorFont);
73 theme->setFont(QQuickTheme::TextField, editorFont);
74 theme->setFont(QQuickTheme::SpinBox, editorFont);
75}
76
static bool hasFamily(const QString &family)
\reentrant
Definition qfont.h:22
void setFamilies(const QStringList &)
Definition qfont.cpp:2721
void setPixelSize(int)
Sets the font size to pixelSize pixels, with a maxiumum size of an unsigned 16-bit integer.
Definition qfont.cpp:1049
@ Medium
Definition qfont.h:68
static void initialize(QQuickTheme *theme)
void setFont(Scope scope, const QFont &font)
\inmodule QtCore
Combined button and popup list for selecting options.
QLatin1StringView QLatin1String
Definition qstringfwd.h:31