qt - 为什么在 QML 中查找窗口大小的代码不起作用?
问题描述
我不明白为什么这段代码不起作用:
ApplicationWindow {
id: mainWindow
visible: true
minimumHeight: 1024
minimumWidth: 768
Component.onCompleted: {
console.log(mainWindow.height + " and " + mainWindow.width);
}
}
这会在输出中读取 0 和 0。为什么这段代码不起作用?
我已经在另一台计算机上对其进行了测试,它似乎工作得很好。我有几个 Qt 安装。我已经尝试了所有这些并得到了相同的结果。
解决方案
Qml Window 最初是从0, 0生成的,当它生成时(使用0, 0)执行以下代码
Component.onCompleted: {
console.log(mainWindow.height + " and " + mainWindow.width);
}
之后minimumHeight和minimumWidth取它们的值。如果您创建按钮并按下它,您可以获得结果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);
}
它总是会给出窗口属性值,并且当用户手动更改它时。但是如果你需要获取一次,你可以创建一个定时器或者检查窗口何时获取它们的属性
另外,您可以检查此答案。
推荐阅读
- sql - 如何处理一些匹配正则表达式的字符串?
- pytorch - 如何使用 PyTorch DataLoader 进行强化学习?
- swiftui - 如何根据某个标签值返回不同的视图?
- html - 当我将自己的 3D 模型添加到
用于场景查看器的 html 中的标签,模型不加载 - java - 发送 OPTIONS 方法的 CORS 问题 - Java SOAP 服务
- sql - 如何在sql命令中使用除法功能?
- ruby-on-rails - 在 Devise 中使用 has_and_belongs_to_many 时,是用户还是用户?
- python - 梯度不一致
- php - 在选项卡下的页面中加载帖子类型
- python-3.x - 在 python 中使用 len() 函数我以某种方式得到了错误的长度