调用QML方法从blackberry级联中的cpp文件刷新listview时的引用错误10

时间:2015-01-19 11:44:06

标签: listview blackberry qml blackberry-10 blackberry-cascades

修改

我在我的主页上创建了一个列表视图,我编写了一个函数来重新加载一个名为reloadView的函数中的listview。现在,当我收到推送通知时,我需要刷新此列表视图。目前,当我收到推送通知时,我在我的applicationui.cpp中的方法pushnotificationhandler()内接到一个调用。因此,当我收到通知时,我需要调用主页的reloadView功能来刷新列表并显示主页。我能够使用QMetaObject执行此操作并且函数会被调用,但对于像Color和_settings这样的变量,它会显示引用错误。在提交cpp之前我还需要声明什么来访问这些变量吗?

以下是我的主页结构

Page {
    id: menuScreenPage
    objectName: "menuScreenPage"

    // This is the function I need to call from applicationui.cpp
    function reloadView() 
    {
        // shows a reference error on this line
        homePageScroll.getMyContacts(_settings.getArrayFor("contactList", null));
    }

    Container {
        background: Color.create("#9B59B6") // shows a reference error on this line
        layout: DockLayout {
        }
        ScrollView {
            id: homePageScroll

            Container {
                layout: DockLayout {
                }
                ListView { 
                    //somecode
                }
            }
            function getMyContacts(contacts)
            {
                //some code to get contacts
            } 
        }
        attachedObjects:[
            GroupDataModel {
                id: contactsData
                sortingKeys: [ "last" ]
                grouping: ItemGrouping.None
            }
        ]
    }
}

//尝试使用metaobject

QDeclarativeEngine engine;
QDeclarativeComponent component(&engine,
          QUrl::fromLocalFile(QFileInfo("app/native/assets/HomePage.qml").absoluteFilePath())));
QObject *object = component.create();

QVariant returnedValue;
QMetaObject::invokeMethod(object, "reloadView");

delete object;

0 个答案:

没有答案