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"); 

当我通过调试器检查时为空。我对 C++ 非常生疏,对 Qt 完全陌生,请温柔:) 我做错了什么?

4

1 回答 1

8

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

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