需要有关 font.pointSize 和 font.pixelSize 的帮助

问题描述 投票:0回答:1

这是我的开发环境。

Qt版本:5.9.4
Windows:寡妇10
Linux:Ubuntu 18.04

我有一个要求,将字体大小设置为20.25。 QML font.pixelSize 采用 integer 值,而 font.pointSize 接受 real。所以我决定使用font.pointSize。但是使用 font.pointSize 会表现出一些奇怪的行为。

import QtQuick 2.9
import QtQuick.Controls 2.2
import QtQuick.Window 2.2

Window {
    visible: true
    width: 800
    height: 480
    title: qsTr("Hello World")
    Column {
        spacing: 20
        Rectangle {
            height: 100
            width: 200
            Text {
                text: "Sample Text with font.pixelSize = 20"
                font {
                    pixelSize: 20
                }
            }
        }
        Rectangle {
            height: 100
            width: 200
            Text {
                text: "Sample Text with font.pointSize = 20"
                font {
                    pointSize: 20
                }
            }
        }
    }
}

使用上面的代码我得到以下输出。
对我来说,根据设置的值,pixelSize 显示正确。但 pointSize 显得很大。
在 Windows 上:
enter image description here

在 Linux 上:
enter image description here

注意:在上面的例子中,我故意将pointSize和pixelSize都设置为20来演示相同值的差异。我的要求是无论如何使用字体大小为20.25。

如果我在这里做错了什么,请告诉我。

qt qml qt-quick qtquickcontrols2
1个回答
1
投票

通常,您应该使用

pointSize
,因为它支持 DPI,而
pixelSize
则不支持。这确实依赖于 DPI 的正确检测。有时,您可能会发现这在某些设备上是错误的。在这种情况下,您可以通过在命令行上更改 Qt 检测到的 DPI 来覆盖它,例如

<application> -platform windows:dpiawareness=0,1,2

您还可以设置

QT_SCALE_FACTOR
环境变量来为应用程序提供全局比例因子。

更多信息请咨询:https://doc.qt.io/qt-6/highdpi.html

© www.soinside.com 2019 - 2024. All rights reserved.