【发布时间】:2014-07-18 09:14:15
【问题描述】:
我的应用同时使用 c++ 和 QML。
我在 C++ 部分定义了几个对象来访问 SQL 等。
看起来像:
class MyObject : public QObject
{
Q_OBJECT
public:
MyObject(QObject *parent = 0);
Q_INVOKABLE void someFunction(const QString &query);
};
qmlRegisterType<MyObject>("xxx.xxx", 1, 0, "MyObject");
理想情况下,我只需要在 Javascript 而不是 QML 中使用这些对象。
我尝试了很多示例并阅读了所有文档,但仍然无法解决我的问题。
所以我的问题:
- 如何在 Javascript 中实例化在 C++ 中定义的对象?我试过
var obj = Qt.createComponent("MyObject");,但它似乎不起作用。是否可以以普通 JS 样式定义新对象 -var obj = new MyObject;? - 如何在 javascript 中访问这个创建的对象?我尝试了 obj.someFunction("xxx") 但出现了一些错误 -
TypeError: Property 'someFunction' of object QQmlComponent(0x3605f5c0) is not a function.我在这里做错了什么?我的对象派生自 QObject,而不是 QQmlComponent。
【问题讨论】:
-
有人回答了这个问题,它出现在我的列表中。 :) 在这里使用context property 不是一个好的解决方案?我能看到的唯一限制是它不能随心所欲地实例化,而是在主 QML 文件加载之前。
标签: javascript qml qt5 qt-quick qtquick2