【发布时间】:2012-10-22 21:55:09
【问题描述】:
我正在尝试通过挂钩到我的 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 完全陌生,请温柔 :) 我做错了什么?
【问题讨论】:
-
这不被认为是一种不好的做法(从 c++ 访问 UI 元素)吗?我一直在努力学习如何将我的 c++ 对象方法连接到 qml 对象信号...
-
@JoaoMilasch 是的。这只是一个例子。主要目标是让 C++ 代码对按钮单击做出反应。
标签: qt qml blackberry-10 blackberry-cascades