首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QtScript自省/反射?

QtScript自省/反射?
EN

Stack Overflow用户
提问于 2011-04-05 13:41:11
回答 2查看 686关注 0票数 1

QtScript是否支持自省/反射(例如,就像python的dir() ),使我能够在运行时通过探索对象模型从内部“映射”出一个api?

EN

回答 2

Stack Overflow用户

发布于 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中工作。

票数 1
EN

Stack Overflow用户

发布于 2011-04-06 06:40:35

是。您没有指定是在QtScript中还是在C++中执行此操作。

在脚本引擎中,您可以使用标准的ECMAscript技术来迭代对象的所有属性:

代码语言:javascript
复制
for (var property_name in some_object) {
  // do something with each property
}

例如,这应该包括导入到脚本引擎的QObject上的任何插槽、信号和Q_PROPERTY。它将不包含任何未标记为signal、slot或Q_INVOKABLE的C++方法。

在C++中,您可以使用QScriptValueIterator遍历脚本引擎中任何对象的所有属性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5547692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档