1

我正在尝试为旗鱼操作系统编写简单的应用程序,但在与封面的交互方面遇到了麻烦。Cover 是一个简单的 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 上找到一些示例,但没有结果

4

1 回答 1

1

我想您应该将 pageMenu 公开为全局别名,例如property alias pageMenu_global作为 ApplicationWindow 的直接子级并使其指向pageMenu

于 2014-08-06T15:25:25.437 回答