当我使用any method在 Qt Quick Controls 2 应用程序中选择非默认(或 Base )样式之一时(即通用或材料),然后是所有带文字的控件(如Label
,TextField
,其字体大小必须取决于{{1 }})使用字体大小值,QGuiApplication::font
在更改之前具有:
QCoreApplication
只有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
正确调整大小,但在我的GUI中没有用。
当我坚持默认样式时,所有提到的项目都会正确调整大小。
如果使用样式时,如何根据全局TextField
调整所有项目的大小,除默认之外?
另一个相互关联的问题是如何为当前使用的样式主题突出显示文本和背景,以获得正确的(手段"对比"和样式符合)颜色?在儿童中使用font.pointSize
中的SystemPalette { id: palette }
会产生仅适用于默认样式的颜色(例如ApplicationWindow
为palette.highlightedText
,"white"
为{{ 1}}或palette.highlight
(不确定))。它在样式主题中看起来很丑陋,与默认不同。
另一个重要的观察是:如果我在根"blue"
中设置"darkblue"
(或同等font.pointSize: 17
),那么所有项目都会正确调整大小,除了具有新上下文的那些:比如font: Qt.application.font
和ApplicationWindow
进入highlight:
s,delegate:
进入*View
s,默认属性项{{ 1}}和sourceComponent:
以及其他内容,其中由于父Loader
的上下文丢失导致字体的继承中断。
看来,我应该手动"继承"每个新上下文Component
。如果是这样,那就很难过。如果是这样的话很无聊在Repeater
中我使用了Item
ApplicationWindow.window.font
个Repeater
:RowLayout
每个Label
我必须添加Label
。
答案 0 :(得分:0)
Orient,我知道为时已晚,但也可以像QApplication
一样设置字体大小:
QFont font = QApplication::font();
font.setPointSizeF(fontSize);
QApplication::setFont(font);