Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将组件定位在所有QML视图的顶部_Javascript_Qt_Qml - Fatal编程技术网

Javascript 如何将组件定位在所有QML视图的顶部

Javascript 如何将组件定位在所有QML视图的顶部,javascript,qt,qml,Javascript,Qt,Qml,我有一个QML菜单组件,我想把它放在我的每个视图和每个视图的顶部,并进行某种同步,这样它就有了典型网页菜单的外观和感觉。请问我该怎么做 import QtQuick 1.0 Row { width: 500 height: 50 anchors.centerIn: parent spacing: parent.width/6 Button { id: loadButton text: qsTr("Menu")

我有一个QML菜单组件,我想把它放在我的每个视图和每个视图的顶部,并进行某种同步,这样它就有了典型网页菜单的外观和感觉。请问我该怎么做

import QtQuick 1.0 

Row {
    width: 500
    height: 50
    anchors.centerIn: parent
    spacing: parent.width/6

    Button {
         id: loadButton
         text: qsTr("Menu")
    }
    Button { 
         id: saveButton
         text: qsTr("Profile")
    }
    Button {
         id: exitButton
         text: qsTr("View Products")
    }

}

有了QML,所有东西都需要放在一个容器中,以便将所有东西与之对齐。在这种情况下,如果您试图将一组按钮构建到一个菜单/行中,那么您需要将其始终放在每个页面的顶部,就像您将其放入的容器一样

也就是说,将上述内容全部放在一个名为“Menu.qml”的文件中。然后在程序中,在希望菜单出现的每个位置,制作一个封闭的矩形(或任何形状),并将菜单定位到顶部:

Rectangle {
    Menu { id: menu; anchor.top: parent.top; anchor.left: parent.left; }

    // put other stuff here
    Rectangle { anchor.top: menu.bottom; }
 }
如果你对每个将出现的对象都这样做,那么你就可以开始了

另一个例子是,在页面堆栈中,使每个页面都包含在顶部。

阅读关于“z”属性QDeclarativeItem或QML项的信息。答案是为菜单组件实例提供最高的z值

MyMenu
{
   z: 100

   ...
}

Rectangle
{
   z: 1

   ...
}
qml渲染器根据该值决定首先绘制哪些项目;如果有什么东西覆盖了你的菜单,它会在它下面结束。顺便说一下,默认的z值是0,因此所有的z值都是相同的,并且或多或少没有定义渲染顺序


祝你好运

不要忘记使用'target'属性,即:PropertyChanges{target:menuItem;z:100}在QML中,文件底部的元素放在前面的元素的顶部。按照这种逻辑,在您的示例中,菜单将显示在所有其他元素的下面。我怀疑是否有人会喜欢那样。