QML在应用程序启动时屏幕不正确的属性

时间:2014-04-05 08:26:06

标签: qt screen qml screen-size

我需要在开始时使用正确的屏幕尺寸,但如果我执行此代码:

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

怎么知道这是什么? 如何在应用开始时获得正确的屏幕尺寸?

1 个答案:

答案 0 :(得分:2)

目前我正在解决类似的问题。 来自Screen documentation

  

请注意,屏幕类型在Component.onCompleted处无效,   因为此时屏幕上尚未显示ItemWindow

因此,您将无法使用onCompleted()从屏幕项目中获取屏幕尺寸。 但相反,您可以从应用程序的C ++端获取此信息并传递给QML上下文:

QScreen* screen = QGuiApplication::primaryScreen();
QSize screenSize = screen->size();
QtQuick2ApplicationViewer viewer;
QQmlContext* qmlContext = viewer.rootContext();
qmlContext->setContextProperty("screenSize", screenSize);