QML 中的尺寸是与设备无关的像素吗?

Sil*_*lex 4 qt qml

我正在使用 Qt 5.6.2

如果我这样做:

Item {
   width: 20
   height: 20
}
Run Code Online (Sandbox Code Playgroud)

width和设备的值是height独立的还是精确的像素?

der*_*erM 5

通常,它是与设备相关的像素。在不使用最大分辨率的情况下,显示器上的确切像素是多少?

有些情况并非如此。例如,如果您使用scale或依赖高 DPI 缩放,就会出现这种情况。http://doc.qt.io/qt-5/highdpi.html

real使用值而不是-values的主要原因之一int是,当希望一个大小是另一个大小的一小部分时,它可以减少向上舍入/向下舍入错误的数量。

请参阅锚点的评论:

anchors.alignWhenCentered (default true)强制居中的锚点与整个像素对齐;如果居中的项目具有奇数宽度或高度,则该项目将定位在整个像素上而不是放置在半像素上。这确保了该物品被清晰地绘制。在某些情况下这是不可取的;例如,当旋转项目时,由于中心是圆形的,锯齿可能会很明显。

获得与设备无关的大小很困难,因为它Screen.devicePixelRatio与文档中所述完全相同:

屏幕的物理像素和与设备无关的像素之间的比率。普通显示器上的常用值为1.0,Apple“视网膜”显示器上的常用值为 2.0。 该 QML 属性是在 Qt 5.4 中引入的。

因此,他们并不关心您是否拥有 4K 智能手机或 800x600 CRT。

Screen.pixelDensity可能会更有帮助,但我认为它依赖于操作系统/硬件信息。根据我的经验,它经常是正确的,但有时却很错误。