我需要在开始时使用正确的屏幕尺寸,但如果我执行此代码:
import QtQuick 2.0
import QtQuick.Window 2.0
Rectangle {
MouseArea {
anchors.fill: parent
onClicked: {
console.log( Screen.height, Screen.width, Screen.desktopAvailableHeight, Screen.desktopAvailableWidth);
}
}
Component.onCompleted: {
console.log( Screen.height, Screen.width, Screen.desktopAvailableHeight, Screen.desktopAvailableWidth);
}
}
我开始时有零
并在鼠标单击时更正屏幕尺寸
0 0 0 0
1200 1920 1133 1920
怎么知道这是什么? 如何在应用开始时获得正确的屏幕尺寸?
答案 0 :(得分:2)
目前我正在解决类似的问题。 来自Screen documentation:
请注意,屏幕类型在
Component.onCompleted
处无效, 因为此时屏幕上尚未显示Item
或Window
因此,您将无法使用onCompleted()
从屏幕项目中获取屏幕尺寸。
但相反,您可以从应用程序的C ++端获取此信息并传递给QML上下文:
QScreen* screen = QGuiApplication::primaryScreen();
QSize screenSize = screen->size();
QtQuick2ApplicationViewer viewer;
QQmlContext* qmlContext = viewer.rootContext();
qmlContext->setContextProperty("screenSize", screenSize);