QModelIndex到QJSValue

时间:2017-01-11 13:18:11

标签: javascript c++ qt qml

我尝试重新实现filterAcceptsRow(int source_row, const QModelIndex &source_parent)的{​​{1}} - 方法。

这里我想调用一个可调用的QSortFilterProxyModel并将两个参数传递给它。为此,我需要将它们放在QJSValue中,这对整数来说很容易。

但我找不到使用QJSValueList执行相同操作的方法。

  • QModelIndex没有JSValue
  • 的构造函数
  • QModelIndex接受一个QObject,我没有。

我有成功的机会吗?

编辑:我现在做了什么

QJSEngine::createQObject

请原谅我任何琐碎的错误。自从我上次使用(并开始学习)C ++以来的5年。

1 个答案:

答案 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的数量(不会编译,只是为了演示存储),因为它不知道如何正确地拆箱。