Blackberry 10 BlackBerry10级联:无法从c++;

Blackberry 10 BlackBerry10级联:无法从c++;,blackberry-10,blackberry-cascades,Blackberry 10,Blackberry Cascades,在我的项目中,我有两个qml文件,即main.qml和DetailsPage.qml < >我试图用C++来修改一个标签的文本> DealIsPase.QML < /Cord>,使用 FIDHORD()/方法。< /P> 这是C++文件和Debug Ipul.qML 中的代码。 Myfile.cpp代码: using namespace bb::cascades; AbstractPane *root; AbstractPane *root1; Navigater::Navigater

在我的项目中,我有两个qml文件,即
main.qml
DetailsPage.qml

< >我试图用C++来修改一个标签的文本> DealIsPase.QML < /Cord>,使用<代码> FIDHORD()/<代码>方法。< /P>

这是C++文件和Debug Ipul.qML

中的代码。 Myfile.cpp代码:

using namespace bb::cascades;

AbstractPane *root;

AbstractPane *root1;

 Navigater::Navigater

(bb::cascades::Application *app):QObject(app)

{

  QmlDocument *qml = QmlDocument::create("asset:///main.qml").parent(this);

   QmlDocument *qml1 = QmlDocument::create("asset:///DetailsPage.qml").parent(this);

    qml->setContextProperty("_app", this);

    qml1->setContextProperty("_app", this);

    root = qml->createRootObject<AbstractPane>();

    root1 = qml1->createRootObject<AbstractPane>();

    app->setScene(root);

}

void Navigater::tr1()

{

Label *tryLabel1 = root1->findChild<Label*>("labelObj");

if(tryLabel1)

{

qDebug()<<"tttt "<<tryLabel1->text();               //initial text

tryLabel1->setText("Hello!!!!!!!") ;

qDebug()<<"yyyy "<<tryLabel1->text();  //changedText gets reflected on DeviceLog but not on UI   
}   
else

{

qDebug()<<"Not Found";}

}
我所做的更改并没有反映在模拟器中,而是可以在设备日志中看到

是否有任何方法可以从多个页面(即main.qml以外的页面)访问控制对象


您可以查看一下吗。

您可以使用导航窗格,将main.qml添加为页面内容,将详细信息页面添加为导航窗格中的附件对象,如

attachedObjects: [
                    ComponentDefinition {
                        id: secondPageDefinition
                        source: "DetailsPage.qml"
                    }
在主页面中添加操作

 onClicked: {
                    // show detail page when the button is clicked
                    var page = secondPageDefinition.createObject();
                     navigationPane.push(page);
                }
我认为这将解决您的问题,并在main.cpp页面中更改以下内容

QmlDocument *qml = QmlDocument::create("asset:///main.qml").parent(this);

qml->setContextProperty("_app", this);

root = qml->createRootObject<AbstractPane>();

app->setScene(root);
QmlDocument*qml=QmlDocument::create(“asset:///main.qml)母公司(本公司);
qml->setContextProperty(“\u app”,this);
root=qml->createRootObject();
应用->设置场景(根);

void导航器::tr1()
{
Label*tryLabel1=root->findChild(“labelObj”);
if(tryLabel1)
{

qDebug()您可以轻松地在qml中导航,而无需使用c++


1.page1.qml

Page {
    id: rootPage
    Container {
        background: Color.LightGray

        layout: DockLayout {

        }
        Label {
            text: "First page"
            horizontalAlignment: HorizontalAlignment.Center
            verticalAlignment: VerticalAlignment.Center
        }
    }

actions: [
        ActionItem {
            title: "Next page"
            ActionBar.placement: ActionBarPlacement.OnBar
            onTriggered: {
                var page = pageDefinition.createObject();
                navigationPane.push(page);

            }

            attachedObjects: ComponentDefinition {
                id: pageDefinition
                source: "PageTwo.qml"
            }
        }
    ]
}
onPopTransitionEnded: {
    page.destroy();
}


如果设置应用->设置场景(根);而不是root1。DetailsPage.qml不显示。因此无法看到对它的任何更改。对吗?我假设页面以其他方式显示,在他的示例代码中未显示的点。setScene不是将qml调用到屏幕上的唯一方法。在这种情况下,调用它的代码可以粘贴。这会有所帮助
void Navigater::tr1()

{

Label *tryLabel1 = root ->findChild<Label*>("labelObj");

if(tryLabel1)

{

qDebug()<<"tttt "<<tryLabel1->text();               /////////////intial text

tryLabel1->setText("Hello!!!!!!!") ;

qDebug()<<"yyyy "<<tryLabel1->text();  ////////////changedText gets reflected on DeviceLog but not on UI

}

else

{

qDebug()<<"Not Found";}

}
Page {
    id: rootPage
    Container {
        background: Color.LightGray

        layout: DockLayout {

        }
        Label {
            text: "First page"
            horizontalAlignment: HorizontalAlignment.Center
            verticalAlignment: VerticalAlignment.Center
        }
    }

actions: [
        ActionItem {
            title: "Next page"
            ActionBar.placement: ActionBarPlacement.OnBar
            onTriggered: {
                var page = pageDefinition.createObject();
                navigationPane.push(page);

            }

            attachedObjects: ComponentDefinition {
                id: pageDefinition
                source: "PageTwo.qml"
            }
        }
    ]
}
onPopTransitionEnded: {
    page.destroy();
}