我想设置QML应用程序窗口的最小宽度和高度,以便内容项完全可见(不剪切)。
import QtQuick 2.5
import QtQuick.Controls 1.4
ApplicationWindow {
visible: true
width: 100
height: 100
title: "test"
minimumWidth: circle.width
minimumHeight: circle.height // + menuBar.height
menuBar: MenuBar {
Menu {
title: qsTr("File")
MenuItem {
text: qsTr("Exit")
onTriggered: Qt.quit();
}
}
}
Rectangle {
id: circle
anchors.centerIn: parent
width: 200
height: 200
color: "red"
radius: width * 0.5
}
}
结果如下:
如您所见,设置最小宽度可以正常工作。最小高度似乎与菜单栏的高度不同。问题是,添加类似menuBar.height
的内容不起作用,因为此属性不存在。
所以问题是:如何设置ApplicationWindow的大小,以便内容项(由width
/ height
或implicitWidth
/ implicitHeight
给出)是不是被剪掉了?
注意:实际上,内容项不是红色圆圈,而是用作游戏画布,我想动态调整大小。
答案 0 :(得分:1)
与旧版QtQuick.Controls 1.x
一样,唯一可以帮助自己的方法是查看(未记录的/内部)属性。对于MenuBar
,这些是:
__ contentItem 似乎很有趣,并且只要实例化它就会显示height
。
因此我们可以定义ApplicationWindow
的高度:
minimumHeight: contentItem.childrenRect.height
+ (menuBar.__contentItem ? menuBar.__contentItem.height : 0)