如何在 QML 文件中调用 QObject 的指针? [英] How can I call a pointer of an QObject in a QML File?
本文介绍了如何在 QML 文件中调用 QObject 的指针?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在为 Blackberry 10 开发应用程序,并且正在使用 Momentics IDE(BB 原生 SDK).
I'm developping an application for Blackberry 10 and I'm using the Momentics IDE (BB native SDK).
当我尝试执行以下代码时出现以下错误.任何人都知道我该如何解决这个问题?
I get the following error when I try to execute the code below. Any one have an idea how can I fix this ?
错误
QMetaProperty::read: Unable to handle unregistered datatype 'DataHandler*' for property 'xxx::dataHandler'
asset:///main.qml:104: TypeError: Result of expression 'xxx.dataHandler' [undefined] is not an object.
Process 627863799 (xxx) terminated SIGSEGV code=1 fltno=11 ip=08055b30(/accounts/1000/appdata/com.ddd.xxx.testDev_e_xxx45b0f435/app/native/xxx@main+0x5d63) ref=006e0075
** xxx.hpp **
class xxx: public QObject {
Q_OBJECT
Q_PROPERTY(DataHandler* dataHandler READ getDataHandler)
public:
xxx(bb::cascades::Application *app);
virtual ~xxx() {
}
Q_INVOKABLE
DataHandler* getDataHandler() const;
private:
DataHandler* m_dataHandler;
}
** xxx.cpp **
xxx::xxx(bb::cascades::Application *app) :
QObject(app) {
m_dataHandler = new DataHandler();
}
** QML 文件 **
Button {
id: backBtn
objectName: "backBtnObject"
text: qsTr("Back") + Retranslate.onLocaleOrLanguageChanged
preferredWidth: backBtn.text.length
visible: false
onClicked: {
xxx.dataHandler.displayLicencesList();
}
}
推荐答案
你需要像这样注册你的指针类型
You need to register your pointer type like this
qRegisterMetaType<ClassA*>("ClassA*");
(来源)
这篇关于如何在 QML 文件中调用 QObject 的指针?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文