我是QML的新手,我正在努力在QML中定义基本布局 . 如何将元素锚定到窗口,以便在用户调整窗口大小时调整大小?我想添加一个填充窗口中所有可用空间的Rectangle,但我还没有找到从qml文件中执行此操作的方法 . 到目前为止我找到的所有示例都使用了固定宽度和高度,但这意味着当窗口大小发生变化时,元素将保持其预设大小 .
针对您的具体问题:
根据父母(兄弟姐妹)锚定所有元素 .
总是让你的顶级qml elemnt填充查看器空间,如here所述 .
加入它 . 无论何时需要进行这种重新调整,都需要从一方通知另一方关于几何变化的信息 . 我的意思是,从qml到C或从C到qml .
To tell qml about resizing in the top window :
qml中的顶级父元素不会获得有关调整窗口小部件大小的任何信号 . 你需要手动完成 .
要获取顶部窗口小部件实际调整大小的信息,您需要实现resizeEvent函数 .
每当你的实现被调用时,你需要向qml方面发出一些调整大小已经发生的信号,因此top qml parent也应该自己调整大小 .
To tell C++ about resizing in the top qml element :
同样,C中的小部件也不会获得有关调整顶级qml元素大小的任何信号 . 你需要手动完成:
将一个类从C侧公开到qml .
每当top qml元素发生更改时,调用此类的函数来通知此更改,并要求它调整顶部窗口小部件的大小 .
您可以了解这些方法的基本概念here和here .
对此的简单回答是使用
Item { anchors.fill: parent }
这是平等的
Item { anchors { top: parent.top left: parent.left right: parent.right bottom: parent.bottom } }
其中parent是您希望项目锚定在其中的对象 . 虽然这通常是父母,但它在技术上可以固定在任何东西上 .
我想补充一点,通常你会静态调整顶级元素的大小,因为使用qml应用程序中的默认选项,应用程序窗口的大小将达到主qml文件中根元素的大小 . 如果你想做一些比较棘手的事情,你需要修改为你的应用程序生成QDeclarativeView的C.
2 回答
针对您的具体问题:
根据父母(兄弟姐妹)锚定所有元素 .
总是让你的顶级qml elemnt填充查看器空间,如here所述 .
加入它 . 无论何时需要进行这种重新调整,都需要从一方通知另一方关于几何变化的信息 . 我的意思是,从qml到C或从C到qml .
To tell qml about resizing in the top window :
qml中的顶级父元素不会获得有关调整窗口小部件大小的任何信号 . 你需要手动完成 .
要获取顶部窗口小部件实际调整大小的信息,您需要实现resizeEvent函数 .
每当你的实现被调用时,你需要向qml方面发出一些调整大小已经发生的信号,因此top qml parent也应该自己调整大小 .
To tell C++ about resizing in the top qml element :
同样,C中的小部件也不会获得有关调整顶级qml元素大小的任何信号 . 你需要手动完成:
将一个类从C侧公开到qml .
每当top qml元素发生更改时,调用此类的函数来通知此更改,并要求它调整顶部窗口小部件的大小 .
您可以了解这些方法的基本概念here和here .
对此的简单回答是使用
这是平等的
其中parent是您希望项目锚定在其中的对象 . 虽然这通常是父母,但它在技术上可以固定在任何东西上 .
我想补充一点,通常你会静态调整顶级元素的大小,因为使用qml应用程序中的默认选项,应用程序窗口的大小将达到主qml文件中根元素的大小 . 如果你想做一些比较棘手的事情,你需要修改为你的应用程序生成QDeclarativeView的C.