5

QML のボタンの clicked() スロットにフックして、C++ コードから別の QML ページを起動しようとしていますが、機能していません。

    Button {
        objectName: btnLogin
        text: qsTr("Login")
        id: btnLogin
    }

そして、C++

QObject *newButton = root->findChild<QObject*>("btnLogin");
QObject::connect(newButton, SIGNAL(clicked()), this, SLOT(loginClick()));

私の hpp ファイルのスロット:

 public slots:  
    void loginClick();

そして私のクリックした方法:

void GConnectBB::loginClick() {
    int i = 0;

    Button *newButton = root->findChild<Button*>("btnLogin");
    if (newButton)
        newButton->setProperty("text", "New button text");
}


QObject *newButton = root->findChild<QObject*>("btnLogin"); 

デバッガーをチェックすると null です。私は C++ に非常に慣れておらず、Qt にはまったく慣れていません。優しくしてください :) 何が間違っているのでしょうか?

4

1 に答える 1

8

オブジェクト名を引用符で囲む必要があります。

Button {
    objectName: "btnLogin"
    ...
    ...
}
于 2012-11-02T10:02:17.393 に答える