无法访问QML元素

时间:2014-08-05 13:45:58

标签: qml sailfish-os

我正在尝试为旗鱼操作系统编写简单的应用程序,但是我遇到了与封面交互的麻烦。封面是一个简单的QML组件,当我的应用程序被隐藏时,它出现在主屏幕上。有一个代码如何初始化应用程序:

ApplicationWindow
{
    Translator {
        id: translator
        Component.onCompleted: translator.translate("ru")
    }

    initialPage: Component { Menu { id:pageMenu } }
    cover: Component { CoverPage {id: myCoverPage } }
}

CoverPage是一个由

组成的qml文件
import QtQuick 2.0
import Sailfish.Silica 1.0

CoverBackground {
    CoverPlaceholder {
        id: placeHolder
        text: pageMenu.testprop            // line 38
        Component.onCompleted: {
            console.log("Component.onCompleted placeHolder")
        }
    }
}

问题是我无法从该文件之外的代码的任何部分(CoverPage.qml)访问封面上的任何元素。例如,在这种情况下我遇到了错误:

[D] onCompleted:11 - Component.onCompleted pageMenu
[D] onCompleted:40 - Component.onCompleted placeHolder
[W] unknown:38 - file:///usr/share/bashReaderOnlyQML/qml/pages/CoverPage.qml:38: ReferenceError: pageMenu is not defined

但是pageMenu是在从ApplicationWindow.initialPage属性加载的另一个文件中定义的,正如您可以从日志中成功初始化看到的那样。我试图在Github上找到一些例子,但没有结果

1 个答案:

答案 0 :(得分:1)

我猜你应该将pageMenu公开为全局别名,例如property alias pageMenu_global作为ApplicationWindow的直接子项,并指向pageMenu