如何对C++中的QML按钮进行反应

Tja*_*art 5 qt qml blackberry-10 blackberry-cascades

我试图通过挂钩到我的QML中按钮的clicked()插槽来从我的C++代码启动一个不同的QML页面,但它不起作用.

    Button {
        objectName: btnLogin
        text: qsTr("Login")
        id: btnLogin
    }
Run Code Online (Sandbox Code Playgroud)

和c ++

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

我的hpp文件中的插槽:

 public slots:  
    void loginClick();
Run Code Online (Sandbox Code Playgroud)

我点击的方法:

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"); 
Run Code Online (Sandbox Code Playgroud)

检查调试器时为null.我对C++非常生疏,对Qt来说是全新的,请温柔:)我能做错什么?

Nis*_*hah 8

您应该用引号括住对象名称:

Button {
    objectName: "btnLogin"
    ...
    ...
}
Run Code Online (Sandbox Code Playgroud)

  • 我想这个错误来自于id属性没有引号的事实. (2认同)