我是QML的新手,我正在努力在QML中定义基本布局。如何将元素锚定到窗口,以便在用户调整窗口大小时调整大小?我想添加一个填充窗口中所有可用空间的Rectangle,但我还没有找到从qml文件中执行此操作的方法。到目前为止我找到的所有示例都使用了固定宽度和高度,但这意味着当窗口大小发生变化时,元素将保持其预设大小。
答案 0 :(得分:3)
针对您的具体问题:
添加它。无论何时需要进行这种重新调整,都需要从一方通知另一方关于几何变化的信息。我的意思是,从qml到C ++或从C ++到qml。
告诉qml在顶部窗口中调整大小:
qml中的顶级父元素不会获得有关调整窗口小部件大小的任何信号。你需要手动完成。
要获取顶部窗口小部件实际调整大小的信息,您需要实现resizeEvent功能。
每当你的实现被调用时,你需要向qml方面发出一些调整大小已经发生的信号,因此top qml parent也应该自己调整大小。
告诉C ++在顶级qml元素中调整大小:
类似地,C ++中的小部件不会获得有关调整顶级qml元素大小的任何信号。您需要手动完成:
答案 1 :(得分:1)
对此的简单回答是使用
Item {
anchors.fill: parent
}
等于
Item {
anchors {
top: parent.top
left: parent.left
right: parent.right
bottom: parent.bottom
}
}
其中parent是您想要将项目锚定在其中的对象。虽然这通常是父母,但它在技术上可以锚定在任何东西上。
我想补充一点,通常你会静态调整顶级元素的大小,因为使用qml应用程序中的默认选项,应用程序窗口的大小将达到主qml文件中根元素的大小。如果你想做一些比较棘手的事情,你需要修改为你的应用程序生成QDeclarativeView的C ++。