【发布时间】:2019-02-07 16:14:33
【问题描述】:
编辑:问题仅出现在 5.6 中,根据 https://doc.qt.io/qt-5.6/qtqml-cppintegration-data.html 与最新版本相比,它支持的“本机”类型集有所减少......
根据此页面:https://doc.qt.io/qt-5/qtqml-cppintegration-data.html、std::vector<int> 如果向 qRegisterMetaType() 注册并作为属性公开/访问,则 QML 支持。但是,我无法让它工作。
我的类(可以由 QML 实例化,因此这个级别有效)具有如下声明:
// prop decl
Q_PROPERTY(std::vector<int> myVector READ myVector NOTIFY myVectorChanged)
// read accessor
Q_INVOKABLE std::vector<int> recordTime() const;
// signal (in signal section)
void myVectorChanged();
注册方式
qRegisterMetaType<std::vector<int> >("std::vector<int>");
当我将某些东西推入向量并尝试访问 myVector.length 或 myVector.size 时,它返回“未定义”(size() 不可调用)。如何迭代元素?上面链接的页面说“在 QML 中透明地支持某些 C++ 序列类型以表现得像 JavaScript 数组类型”(并在列表中提到 std::vector<int>),所以我希望 length 和索引访问能够正常工作。
【问题讨论】: