在Qt Quick Controls 2中使用非默认样式时的字体大小
当我在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))
标签
,文本字段
,其字体大小必须取决于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
为“白色”
,调色板。突出显示的为“蓝色”
或“深蓝色”
(不确定))。它的样式主题看起来很难看,与默认的不同
另一个重要的观察结果是:如果我在rootApplicationWindow
中设置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。然后使用您的方法修改顶部的文件,并将控件的字体设置为应用程序字体。