Hyn*_*rix 0 qt qml qtquickcontrols2
我想缩放Label像这样的字体大小:
Label {
font.size: font.size*0.8
}
Run Code Online (Sandbox Code Playgroud)
当然这会创建一个绑定循环.有没有办法在不创建隐藏Label元素的情况下执行此操作?
Label {
id: hiddenLabel
}
Label {
font.size: hiddenLabel.font.size*0.8
}
Run Code Online (Sandbox Code Playgroud)
缩放整个标签不是最佳的,因为文本质量下降:
Label {
scale: 0.8
}
Run Code Online (Sandbox Code Playgroud)
问候,
除了已经提到的其他选项,还有Qt.application.font:
Label {
font.pixelSize: Qt.application.font.pixelSize * 0.8
}
Run Code Online (Sandbox Code Playgroud)
此只读属性包含返回的默认应用程序字体
QGuiApplication::font().
- "
<h3>Large text</h3>" - 在文本下面增加了额外的空间,因为它是一个HTML元素,所以如果你想要一个体面的布局,那就没有用了.- 硬编码像素大小.与Qt :: AA_EnableHighDpiScaling结合使用时工作正常,只要您猜测适用于您所定位的每个设备/显示器的正确尺寸.没有设置Qt :: AA_EnableHighDpiScaling不起作用.
- 使用FontMetrics/TextMetrics.工作正常,但有点冗长.
- 使用空的Text元素.创建一个不必要的项目.已被FontMetrics/TextMetrics取代.
- defaultPixelSize/implicitPixelSize和defaultPointSize/implicitPointSize.在字体分组属性之外已经存在与字体相关的属性,因此这不会不合适,但API已经非常大.
如果您确实需要将字体大小基于您正在使用的特定控件,唯一可靠的方法是创建该控件的"空"/"默认构造"实例:
Button {
id: dummyButton
}
Button {
font.pixelSize: dummyButton.font.pixelSize * 0.8
}
Run Code Online (Sandbox Code Playgroud)
这是因为每种样式对于不同类型的控件具有不同的字体大小.例如,请参阅材质样式的主题代码.