gpt4 book ai didi

javascript - QML/QT 无法将 C++ 中的 QList 转换为 javascript 中的对象数组

转载 作者:行者123 更新时间:2023-11-30 05:16:13 29 4
gpt4 key购买 nike

QML/QT 无法将 C++ 中的 QList 转换为 javascript 中的对象数组。

class ParamListModel:QAbstractListModel
{
Q_OBJECT
QList<QVariantMap> paramMapObjList;
// ...
public:
// paramMapObjList can not be converted to an array
// of objects in javascript
// so I have to use this method:
// the returned QVariantMap will be converted to javascript object
// by QML automatically.
Q_INVOKABLE QVariantMap getParamObj(int index);
// ...
}

有更好的方法吗?

最佳答案

我不确定 QML 是否理解 QVariantMap 的 QList,但它确实理解 QVariant。我通常像这样嵌套 QVariantMap 数据,以便在 ListView 项目中使用它:

QVariant MyClass::myListModel()
{
QVariantList vList;

for(Group *grp : groups())
{
QVariantMap vMap;
vMap.insert("mIcon", "qrc:/icon.svg");
vMap.insert("mLabel", grp->name());
vMap.insert("mValue", grp->id());
vList.append(vMap);
}

return QVariant::fromValue(vList);
}

然后您可以拥有这样的 Q_PROPERTY:

Q_PROPERTY(QVariant myListModel READ myListModel NOTIFY myListModelChanged)

关于javascript - QML/QT 无法将 C++ 中的 QList<QVariantMap> 转换为 javascript 中的对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42748425/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com