首页 文章

将QML元素锚定到窗口

提问于
浏览
1

我是QML的新手,我正在努力在QML中定义基本布局 . 如何将元素锚定到窗口,以便在用户调整窗口大小时调整大小?我想添加一个填充窗口中所有可用空间的Rectangle,但我还没有找到从qml文件中执行此操作的方法 . 到目前为止我找到的所有示例都使用了固定宽度和高度,但这意味着当窗口大小发生变化时,元素将保持其预设大小 .

2 回答

  • 3

    针对您的具体问题:

    • 根据父母(兄弟姐妹)锚定所有元素 .

    • 总是让你的顶级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元素发生更改时,调用此类的函数来通知此更改,并要求它调整顶部窗口小部件的大小 .

    您可以了解这些方法的基本概念herehere .

  • 1

    对此的简单回答是使用

    Item {
      anchors.fill: parent
    }
    

    这是平等的

    Item {
      anchors {
        top: parent.top
        left: parent.left
        right: parent.right
        bottom: parent.bottom
      }
    }
    

    其中parent是您希望项目锚定在其中的对象 . 虽然这通常是父母,但它在技术上可以固定在任何东西上 .

    我想补充一点,通常你会静态调整顶级元素的大小,因为使用qml应用程序中的默认选项,应用程序窗口的大小将达到主qml文件中根元素的大小 . 如果你想做一些比较棘手的事情,你需要修改为你的应用程序生成QDeclarativeView的C.

相关问题