我对 QML 真的很陌生,我正在努力在 QML 中定义基本布局。如何将元素锚定到窗口,以便在用户调整窗口大小时调整大小?我想添加一个填充窗口中所有可用空间的矩形,但我还没有找到从 qml 文件中执行此操作的方法。到目前为止,我发现的所有示例都使用固定宽度和高度,但这意味着当窗口大小发生变化时,元素将保持其预设大小。
问问题
1655 次
2 回答
3
对于您的具体问题:
- 根据父母(兄弟姐妹)锚定所有元素。
- 始终使您的顶级 qml 元素填充查看器空间,如此处所述。
添加到它。每当您需要进行此类调整大小时,您需要从一侧到另一侧通知几何形状的变化。我的意思是,从 qml 到 C++ 或从 C++ 到 qml。
告诉 qml 在顶部窗口中调整大小:
您在 qml 中的顶级父元素不会收到有关调整小部件大小的任何信号。您需要手动完成。
要获取顶部小部件实际调整大小的信息,您需要实现resizeEvent函数。
每当您的实现被调用时,您需要向 qml 方发出信号,表明发生了一些调整大小,因此顶级 qml 父级也应该自行调整大小。
告诉 C++ 调整顶部 qml 元素的大小:
同样,您在 C++ 中的小部件不会收到任何关于调整顶部 qml 元素大小的信号。您需要手动执行此操作:
- 从 C++ 端向 qml 公开一个类。
- 每当顶部 qml 元素发生变化时,调用此类的函数来通知此更改,并要求它也调整顶部小部件的大小。
于 2013-02-21T04:39:35.830 回答
1
对此的简单答案是使用
Item {
anchors.fill: parent
}
这相当于
Item {
anchors {
top: parent.top
left: parent.left
right: parent.right
bottom: parent.bottom
}
}
其中 parent 是您希望将项目锚定在其中的对象。虽然这通常是父级,但从技术上讲,它可以锚定到任何东西上。
我想补充一点,通常您静态地调整顶级元素的大小,因为使用 qml 应用程序中的默认选项,应用程序窗口的大小将调整为主 qml 文件中根元素的大小。如果您想做一些更棘手的事情,您将需要修改为您的应用程序生成 QDeclarativeView 的 C++。
于 2013-02-19T20:45:41.627 回答