当我使用any method选择非默认(或基地)样式Qt的快速控制2应用(即通用或之一材料),那么所有的文本(其字体大小必须依靠QGuiApplication::font
)控制像Label
,TextField
,使用字体大小值,QCoreApplication
有改变之前:字体大小控件2
QFont font = application.font();
bool ok = false;
font.setPointSize(QSettings{}.value("fontSize", 17).toInt(&ok));
Q_ASSERT(std::exchange(ok, false));
application.setFont(font);
只有Text
,TextField
适当调整,但他们在我的GUI没有用的。
当我坚持默认样式,然后所有提到的项目都适当调整大小。
如何使所有项目的大小取决于全球font.pointSize
何时使用样式,其他默认?
相互连接的问题是如何获得适当的(意思是“对比度”和风格符合的),比如说颜色,突出显示的文本和背景为当前主题风格中使用?从儿童ApplicationWindow
使用SystemPalette { id: palette }
给出了只适合默认风格的颜色(比如palette.highlightedText
为"white"
,palette.highlight
是"blue"
或"darkblue"
(不知道))。它看起来丑陋的风格主题,从默认不同。
另一个重要的观察是:如果我将font.pointSize: 17
(或同等font: Qt.application.font
)根ApplicationWindow
,那么所有的项目都适当调整,除了那些他们具有新的上下文的:说,highlight:
和delegate:
s转换*View
S,sourceComponent:
s转换Loader
S,Component
和Repeater
和其他的默认属性项,其中因迷路父Item
的上下文的字体休息的继承。
看来,我应该为每一个新的上下文手动“继承” ApplicationWindow.window.font
。如果是这样,那很伤心。这很无聊,例如,如果在Repeater
我用RowLayout
有大量的Label
S:在每个Label
我要补充font: ApplicationWindow.window.font
。
BTW尝试不同风格的主题,给人一种找到所有的不好的设计决策的机会。它就像一个用于GUI的筛选器,它用'font.pointSize'的合理范围枚举所有可能的样式。 – Orient