在Qt Quick Controls 2中使用非默认样式时的字体大小

在Qt Quick Controls 2中使用非默认样式时的字体大小,qt,fonts,qml,qtquick2,qtquickcontrols2,Qt,Fonts,Qml,Qtquick2,Qtquickcontrols2,当我在Qt Quick Controls 2应用程序(即通用或材质)中选择一种非默认(或基本)样式时,所有带有文本的控件(如标签,文本字段,其字体大小必须取决于QGUI应用程序::字体)都使用字体大小值,更改之前,QCoreApplication具有以下哪种功能: QFont font = application.font(); bool ok = false; font.setPointSize(QSettings{}.value("fontSize", 17).toInt(&ok))

当我在Qt Quick Controls 2应用程序(即通用或材质)中选择一种非默认(或基本)样式时,所有带有文本的控件(如
标签
文本字段
,其字体大小必须取决于
QGUI应用程序::字体
)都使用字体大小值,更改之前,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
TextField
的大小调整正确,但它们在我的GUI中没有任何用处

当我坚持使用默认样式时,所有提到的项目都会正确调整大小

使用样式时,如何根据全局
font.pointSize
调整所有项目的大小,而不是默认值

另一个相关的问题是,如何为当前使用的样式主题(例如突出显示的文本和背景)获得适当的颜色(表示“对比度”和样式一致性)?在子级中使用
ApplicationWindow
中的
SystemPalette{id:palette}
可提供仅适用于默认样式的颜色(例如
palette。highlightedText
“白色”
调色板。突出显示的
“蓝色”
“深蓝色”
(不确定))。它的样式主题看起来很难看,与默认的不同

另一个重要的观察结果是:如果我在root
ApplicationWindow
中设置
font.pointSize:17
(或者同样设置
font:Qt.application.font
),那么所有项目的大小都会正确调整,除了那些具有新上下文的项目:例如,
突出显示:
委派:
s进入
*视图
s、
源组件:
s进入
加载器
s、
组件
重复器
的默认属性项以及其他,由于父
的上下文丢失,字体继承中断


似乎,我应该为每个新上下文手动“继承”
ApplicationWindow.window.font
。如果是这样的话,那是很悲哀的。这是很无聊的,例如,在
Repeater
中,我使用
RowLayout
和大量的
Label
s:在每个
Label
中,我必须添加
font:ApplicationWindow.window.font
定向,我知道已经太晚了,但是人们也可以像这样在
QApplication
中设置字体大小:

QFont font = QApplication::font();
font.setPointSizeF(fontSize);
QApplication::setFont(font);

Orient,我知道太晚了,但也可以在
QApplication
中设置字体大小,如下所示:

QFont font = QApplication::font();
font.setPointSizeF(fontSize);
QApplication::setFont(font);

这是胡说八道。QML应用程序不需要
QApplication
,只需要
QGuiApplication
。没有办法不按你说的去做,这是胡说八道。QML应用程序不需要
QApplication
,只需要
QGuiApplication
。没有办法不做你提到的事。你有没有找到一个好的解决办法?我遇到了同样的问题。@Colin不。似乎有需要在票证/错误报告。谢谢回复。我提出的解决方法工作得很好,但有点麻烦:创建一个定制的qt快速控件(2!)样式,并为每个元素(TextField等)复制qml。然后使用您的方法修改顶部的文件,并将控件的字体设置为应用程序字体。您是否找到解决此问题的好方法?我遇到了同样的问题。@Colin不。似乎有需要在票证/错误报告。谢谢回复。我提出的解决方法工作得很好,但有点麻烦:创建一个定制的qt快速控件(2!)样式,并为每个元素(TextField等)复制qml。然后使用您的方法修改顶部的文件,并将控件的字体设置为应用程序字体。