首页 > 解决方案 > 为什么在 QML 中查找窗口大小的代码不起作用?

问题描述

我不明白为什么这段代码不起作用:

ApplicationWindow {

    id: mainWindow
    visible: true
    minimumHeight: 1024
    minimumWidth: 768

    Component.onCompleted: {
        console.log(mainWindow.height + " and " + mainWindow.width);
    }

}

这会在输出中读取 0 和 0。为什么这段代码不起作用?

我已经在另一台计算机上对其进行了测试,它似乎工作得很好。我有几个 Qt 安装。我已经尝试了所有这些并得到了相同的结果。

标签: qtqml

解决方案


Qml Window 最初是从0, 0生成的,当它生成时(使用0, 0)执行以下代码

Component.onCompleted: {
    console.log(mainWindow.height + " and " + mainWindow.width);
}

之后minimumHeightminimumWidth取它们的值。如果您创建按钮并按下它,您可以获得结果qml: 1024 和 768

Button {
    id: button
    text: qsTr("Button")
    onClicked: console.log(mainWindow.height + " and " + mainWindow.width);
}

如果您需要在开始时获取值,您可以尝试此代码

onWidthChanged: {
    console.log(mainWindow.height + " and " + mainWindow.width);
}

或者

onHeightChanged: {
    console.log(mainWindow.height + " and " + mainWindow.width);
}

它总是会给出窗口属性值,并且当用户手动更改它时。但是如果你需要获取一次,你可以创建一个定时器或者检查窗口何时获取它们的属性

另外,您可以检查此答案


推荐阅读