我遇到了一个问题,我希望是因为我不善于编写QML而不是因为Qt中的一些基本错误.
每当我在水平方向(宽度更改)调整应用程序窗口大小时,窗口不会调整到我释放鼠标的位置,而是"快照"回到其最小宽度.我已设法将其剥离到重现该bug的最基本要求.
不释放鼠标按钮会导致宽度在最小宽度和鼠标位置之间来回跳动.
删除项目可以删除错误
垂直调整大小(更改高度)如果鼠标长时间未释放(例如处于调整大小状态),有时可能会使应用程序崩溃
因此,实际上不可能调整大小
main.qml
import QtQuick 2.5 import QtQuick.Window 2.2 import QtQuick.Controls 1.4 ApplicationWindow { id: root visible: true minimumHeight: 768 minimumWidth: 1024 title: qsTr("Test") color: "#292525" Item { width: 0.9*parent.width height: 0.1*parent.height } }
知道为什么会这样吗?
你有一种微妙的绑定循环形式.QtQuickControls ApplicationWindow
试图保持窗口内容的大小与其内部的内容相匹配,这些内容被调用contentItem
,所有的孩子ApplicationWindow
都被(默默地)重新定义,但是你的内容大小取决于窗口的大小.居住在.
所以,你调整窗口Item
的大小contentItem
,这会ApplicationWindow
改变你的大小,这会改变你的大小,这会调整你的窗口大小(和你一起战斗).
像这样的东西可能会起作用:
import QtQuick 2.5 import QtQuick.Window 2.2 import QtQuick.Controls 1.4 ApplicationWindow { id: root visible: true minimumHeight: 768 minimumWidth: 1024 title: qsTr("Test") color: "#292525" // This item will just match the Window's size... Item { anchors.fill: parent // ... and here, we'll fill a part of it with a rectangle. Rectangle { color: "red" width: 0.9*parent.width height: 0.1*parent.height } } }