2

我找到了多个关于如何从 C++ 中做到这一点的答案,但不是从 QML 中找到的。

如何从 QStringListModel 获取特定(基于索引)行?我尝试了适用于其他模型的表达式,但它不适用于 QStringListModel。我也尝试使用

var dataRow = myModel.data(rowNumber)

但它返回“未定义”。

4

1 回答 1

4

当你打电话时,myModel.data你在打电话QVariant QAbstractItemModel::data(const QModelIndex &index, int role = Qt::DisplayRole)。此方法QModelIndex为角色接受一个和一个可选的 int。
显示角色是您查询 a 时想要的,QStringListModel因此您无需指定角色参数。
但是,您确实需要使用有效的QModelIndex. 你可以从模型中得到一个QModelIndex QAbstractItemModel::index(int row, int column, const QModelIndex &parent = QModelIndex()) const

因此,在您的情况下,正确的方法是:
var dataRow = myModel.data(myModel.index(rowNumber, 0));

您可以从 QML 调用data和调用,index因为两者都是Q_INVOKABLE.

于 2017-09-22T13:33:35.557 回答