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

时间:2012-11-02 08:39:16

标签: qt qml blackberry-10 blackberry-cascades

我试图通过挂钩到我的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来说是全新的,请温柔:)我能做错什么?

1 个答案:

答案 0 :(得分:8)

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

Button {
    objectName: "btnLogin"
    ...
    ...
}