从 QStringListModel 获取一行(来自 qml)
Get a row from QStringListModel (from qml)
我找到了多个关于如何从 C++ 中执行此操作的答案,但没有从 QML 中找到。
如何从 QStringListModel 中获取特定的(基于索引的)行?我尝试了适用于其他模型的表达式,但它不适用于 QStringListModel。我也尝试使用
var dataRow = myModel.data(rowNumber)
但它返回 "undefined"。
当您调用 myModel.data
时,您正在调用 QVariant QAbstractItemModel::data(const QModelIndex &index, int role = Qt::DisplayRole)
。
此方法采用 QModelIndex
和一个可选的 int 作为角色。
显示角色就是你在查询一个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
.
我找到了多个关于如何从 C++ 中执行此操作的答案,但没有从 QML 中找到。
如何从 QStringListModel 中获取特定的(基于索引的)行?我尝试了适用于其他模型的表达式,但它不适用于 QStringListModel。我也尝试使用
var dataRow = myModel.data(rowNumber)
但它返回 "undefined"。
当您调用 myModel.data
时,您正在调用 QVariant QAbstractItemModel::data(const QModelIndex &index, int role = Qt::DisplayRole)
。
此方法采用 QModelIndex
和一个可选的 int 作为角色。
显示角色就是你在查询一个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
.