我从C ++中找到了关于如何做到这一点的多个答案,而不是来自QML。
如何从QStringListModel获取特定的(基于索引)行?我尝试过从其他模型开始工作的表达式,但它对QStringListModel不起作用。我也尝试过使用
var dataRow = myModel.data(rowNumber)
但它返回“未定义”。
答案 0 :(得分:1)
当您拨打myModel.data
时,您正在呼叫QVariant QAbstractItemModel::data(const QModelIndex &index, int role = Qt::DisplayRole)
。
此方法为角色采用QModelIndex
和可选的int
当您查询QStringListModel
时,显示角色就是您想要的,因此您无需指定角色参数
但是,您需要使用有效的QModelIndex
指定index参数。您可以使用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
。