我尝试重新实现filterAcceptsRow(int source_row, const QModelIndex &source_parent)
的{{1}} - 方法。
这里我想调用一个可调用的QSortFilterProxyModel
并将两个参数传递给它。为此,我需要将它们放在QJSValue
中,这对整数来说很容易。
但我找不到使用QJSValueList
执行相同操作的方法。
QModelIndex
没有JSValue
QModelIndex
接受一个QObject,我没有。我有成功的机会吗?
编辑:我现在做了什么
QJSEngine::createQObject
请原谅我任何琐碎的错误。自从我上次使用(并开始学习)C ++以来的5年。
答案 0 :(得分:2)
我不太清楚你在描述中做了什么,但假设你有一个QModelIndex
(用C ++)并且由于某种原因想要QJSValue
,那么我认为{{1确实是你想要的。这可能应该与QJSEngine::toScriptValue
doc链接,我会尝试修复该版本以供将来发布。
我自己从未这样做过,但这样的事情应该有效:
QJSValue
如果你想转向另一个方向,即从QJSValue中取消装箱QModelIndex:
QJSEngine *e; /* I assume you've got this already somewhere .. */
QModelIndex m = something->index(...); /* and you have a model index */
QJSValue val = e->toScriptValue(m);
// go ahead and use val!
QJSValue val = something->prop(); // now to extract it...
QModelIndex m = e->fromScriptValue<QModelIndex>(val);
// go ahead and use m!
和QVariant
都是可以包含不同类型数据的动态“框”,因此您不希望加倍并为QML提供等于QJSValue
的数量(不会编译,只是为了演示存储),因为它不知道如何正确地拆箱。