我试图通过挂钩到我的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来说是全新的,请温柔:)我能做错什么?
答案 0 :(得分:8)
您应该用引号括起对象名称:
Button {
objectName: "btnLogin"
...
...
}