Qt `屏幕.像素密度`在非视觉组件中等于0
我想使用QML中的Qt `屏幕.像素密度`在非视觉组件中等于0,qt,properties,qml,qtquick2,qt-quick,Qt,Properties,Qml,Qtquick2,Qt Quick,我想使用QML中的Screen.pixelDensity来计算视觉组件的大小。为了将元素的属性保留在一个位置(有两个),我创建了一个容器对象: import QtQuick 2.0 Item { readonly property double constantValue: 100 * Screen.pixelDensity property double first property double second: first + constantValue
Screen.pixelDensity
来计算视觉组件的大小。为了将元素的属性保留在一个位置(有两个),我创建了一个容器对象:
import QtQuick 2.0
Item
{
readonly property double constantValue: 100 * Screen.pixelDensity
property double first
property double second: first + constantValue
// and so on
Component.onCompleted: console.log(Screen.pixelDensity) // (1)
}
初始化对象时,语句(1)报告Screen.pixelDensity==0
如果我在main.qml中使用相同的语句:
import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Window 2.0
ApplicationWindow
{
title: qsTr("title")
width: 480
height: 800
// some visual stuff here
Component.onCompleted: console.log("testing: " + Screen.pixelDensity)
}
然后,Screen.pixelDensity
报告为非零,如预期的那样
为什么属性在第一种情况下会出现错误行为?如
组件完成后,屏幕附加对象在项目或项目派生类型内有效。在这些项目中,它指的是项目当前显示的屏幕。
如果项目未显示(这是我从您的问题中理解的),则无法访问信息。。。因此,它显示0