QtScript是否支持自省/反射(例如,就像python的dir() ),使我能够在运行时通过探索对象模型从内部“映射”出一个api?
发布于 2011-04-05 17:42:06
你真的应该多看看QObject和QMetaObject。
QScriptValue supports the types defined in the ECMA-262 standard: The primitive types, which are Undefined, Null, Boolean, Number, and String; and the Object type. Additionally, Qt Script has built-in support for QVariant, QObject and QMetaObject.
在Qt的QMetaObject页面上:
Qt's meta-object system provides the signals and slots mechanism for inter-object communication, run-time type information, and the dynamic property system.
QObject包含方法children,该方法返回对象的子级列表和一个parent方法。
最重要的是,从pyqt的角度来看,这些都是python对象,从我的简单测试来看,inspect模块在这些对象上工作得很好。
你应该能够用其中的任何一个来构建一个。
PyQt和Qt是一回事,提供了相同的信息。最终,如果它在C++ Qt中工作,那么它也应该在PyQt中工作。
发布于 2011-04-06 06:40:35
是。您没有指定是在QtScript中还是在C++中执行此操作。
在脚本引擎中,您可以使用标准的ECMAscript技术来迭代对象的所有属性:
for (var property_name in some_object) {
// do something with each property
}例如,这应该包括导入到脚本引擎的QObject上的任何插槽、信号和Q_PROPERTY。它将不包含任何未标记为signal、slot或Q_INVOKABLE的C++方法。
在C++中,您可以使用QScriptValueIterator遍历脚本引擎中任何对象的所有属性。
https://stackoverflow.com/questions/5547692
复制相似问题