如何在 QML 文件中调用 QObject 的指针? [英] How can I call a pointer of an QObject in a QML File?

查看:35
本文介绍了如何在 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆