0

Blackberry 10 の開発は初めてです。シンプルな BB 10 カスケード プロジェクトを作成しました。C++関数を使用してラベルのテキストを変更したい。

main.qml

      import bb.cascades 1.0    
      Page {
         content: Container {
         id: containerID
         Button {
            id: button1
            objectName: "button"
            text: "text"
            onClicked: {
                btnClicked("New Label Text");
            }
        }
        Label {
            id: label1
            objectName: "label1"
            text: "Old Label Text"
        }
    }
}

ここで、どのファイルで宣言し、どのファイルで関数btnClicked(QString)関数を定義する必要があります。

ハローBB.hpp

// Default empty project template
#ifndef HelloBB_HPP_
#define HelloBB_HPP_

#include <QObject>

namespace bb { namespace cascades { class Application; }}

class HelloBB : public QObject
{
    Q_OBJECT
    public:
    HelloBB(bb::cascades::Application *app);

    virtual ~HelloBB() {}

};

#endif

ハローBB.cpp

// Default empty project template
#include "HelloBB.hpp"
#include <bb/cascades/Application>
#include <bb/cascades/QmlDocument>
#include <bb/cascades/AbstractPane>

using namespace bb::cascades;
HelloBB::HelloBB(bb::cascades::Application *app) : QObject(app)
{
    // create scene document from main.qml asset
    //set parent to created document to ensure it exists for the whole application lifetime
    QmlDocument *qml = QmlDocument::create("asset:///main.qml").parent(this);

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

    // create root object for the UI
    AbstractPane *root = qml->createRootObject<AbstractPane>();

    // set created root object as a scene
    app->setScene(root);
}

ここで、ラベル テキストをOld Label Textからユーザーが指定したtext に変更したいと考えています。qml から c++ 関数を呼び出しています。この関数を定義する場所と、この c++ 関数を qml から接続する方法がわかりません。

ありがとう。

4

2 に答える 2

0

C++ 経由でラベルを見つけるには、次を使用できます。

Label* yourL = root->findChild<Label*>(LabelObjName); yourL->SetText("my new beautiful text);

必ず追加してください:

#include <bb/cascades/Button>

ルートをクラスのプライベート変数として使用して、他のメソッドでもオブジェクトにアクセスできるようにします

bb::cascades::AbstractPane *root;

よろしく

于 2014-08-04T01:42:17.863 に答える