Qt快速控制2

时间:2017-08-25 10:23:59

标签: qt fonts qml qtquick2 qtquickcontrols2

当我使用any method Qt Quick Controls 2 应用程序中选择非默认(或 Base )样式之一时(即通用材料),然后是所有带文字的控件(如LabelTextField,其字体大小必须取决于{{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 }会产生仅适用于默认样式的颜色(例如ApplicationWindowpalette.highlightedText"white"为{{ 1}}或palette.highlight(不确定))。它在样式主题中看起来很丑陋,与默认不同。

另一个重要的观察是:如果我在根"blue"中设置"darkblue"(或同等font.pointSize: 17),那么所有项目都会正确调整大小,除了具有新上下文的那些:比如font: Qt.application.fontApplicationWindow进入highlight: s,delegate:进入*View s,默认属性项{{ 1}}和sourceComponent:以及其他内容,其中由于父Loader的上下文丢失导致字体的继承中断。

看来,我应该手动"继承"每个新上下文Component。如果是这样,那就很难过。如果是这样的话很无聊在Repeater中我使用了Item ApplicationWindow.window.fontRepeaterRowLayout每个Label我必须添加Label

1 个答案:

答案 0 :(得分:0)

Orient,我知道为时已晚,但也可以像QApplication一样设置字体大小:

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