【发布时间】:2015-06-16 09:29:52
【问题描述】:
我正在使用 SWIG 为我的 qt 应用程序生成 Python 绑定。我有几个使用 QLists 的地方,我想从 SWIG 库中集成这些 QList,例如 std::vector(请参阅 http://www.swig.org/Doc1.3/Library.html#Library_nn15)。
这意味着:
- QList 对象应可从 python 迭代(= 它们必须是可迭代的 Python 对象)
- 应该可以将 python 列表传递给采用 qlist 的函数
- ...以及 SWIG 库中列出的 std::vector 的所有其他功能
为此,我使用以下代码:
https://github.com/osmandapp/OsmAnd-core/blob/master/swig/java/QList.i
后来在我使用 QLists 的课程中,我添加了如下代码:
%import "qlist.i"
%template(listfilter) QList<Interface_Filter*>;
class A {
public:
//.....
QList<Interface_Filter*> get_filters();
};
到目前为止,这有效,但它并没有给我与 std::vector 的那种集成。
我无法找出 std_vector.i、std_container.i、...的哪些部分使对象可迭代。
我需要如何扩展 QList 接口文件以使我的 QList 可迭代?强>
【问题讨论】: