QML ApplicationWindow:设置最小尺寸以适应内容
QML ApplicationWindow: set minimum size to fit content
我想设置我的 QML 应用程序的最小宽度和高度 window,以便内容项完全可见(不被剪裁)。
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
) 没有剪裁?
注意:实际上,内容项不是红色圆圈,而是用作游戏 canvas,我想动态调整其大小。
与旧 QtQuick.Controls 1.x
一样,唯一帮助自己的方法是查看 (undocumented/internal) 属性。 MenuBar
是:
- 对象名称
- 菜单
- __contentItem
- __parentWindow
- __isNative
- 风格
- __style
- __menuBarComponent
- objectNameChanged
- 菜单已更改
- nativeChanged
- contentItemChanged
- 风格改变
- __style已更改
- __menuBarComponent已更改
__contentItem 看起来很有趣,它的特点是 height
- 一旦实例化。
所以我们可以这样定义ApplicationWindow
的高度:
minimumHeight: contentItem.childrenRect.height
+ (menuBar.__contentItem ? menuBar.__contentItem.height : 0)
我想设置我的 QML 应用程序的最小宽度和高度 window,以便内容项完全可见(不被剪裁)。
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
) 没有剪裁?
注意:实际上,内容项不是红色圆圈,而是用作游戏 canvas,我想动态调整其大小。
与旧 QtQuick.Controls 1.x
一样,唯一帮助自己的方法是查看 (undocumented/internal) 属性。 MenuBar
是:
- 对象名称
- 菜单
- __contentItem
- __parentWindow
- __isNative
- 风格
- __style
- __menuBarComponent
- objectNameChanged
- 菜单已更改
- nativeChanged
- contentItemChanged
- 风格改变
- __style已更改
- __menuBarComponent已更改
__contentItem 看起来很有趣,它的特点是 height
- 一旦实例化。
所以我们可以这样定义ApplicationWindow
的高度:
minimumHeight: contentItem.childrenRect.height
+ (menuBar.__contentItem ? menuBar.__contentItem.height : 0)