我正在写一个对象到QML的序列化,并希望能够获得在QML对象中定义的函数的源代码。假设我有在QML(test.qml
)下面的例子:如何在C++中获取QML方法的源代码?
我创建一个QObject
:从obj
。
有什么办法(可哈克),以获得obj
的方法foo
的源代码,而无需解析QML文件obj
从被创造?
可以使用QQmlComponent
obj
是从任何其他Qt类创建的,只要我不必自己解析它。或者,如何从test.qml
文件中获取函数的源代码而无需编写自己的解析器?我不想假设test.qml
有什么特别之处(例如,它可能与上面的不同,它不必简单到足以使用正则表达式或其他不完整的QML解析器)。
假设这个作品如JavaScript,我想是这样的:
QQmlExpression expr(engine.rootContext(), obj, "foo.toString()");
QVariant sourceCode = expr.evaluate();
但是,这是行不通的。
编辑:根据http://www.ecma-international.org/ecma-262/5.1/#sec-15.3.4.2函数对象原型的toString
方法是实现定义的。在QML的情况下,我得到的结果:
QVariant(QString, "function() { [code] }")
因为似乎没有成为一个方式来获得由JS或C++代码,我不会限制自己对公共的Qt API了。
你想要一个源代码?或者只是想运行功能? – nitish005 2014-11-08 05:12:45
我需要的源代码,而不是运行该功能。 – Xilexio 2014-11-08 15:44:27