15

我仍在努力使用 QListView,我试图在视图中选择一个特定的行,但我无法弄清楚如何做到这一点。

我在 StackOverflow 上发现了一个类似的问题,它建议使用createIndex()模型的方法,但是这种方法是受保护的(也许它曾经是公共的,但现在不再是),所以这对我不起作用。有什么建议吗?

4

2 回答 2

27

您只需调用即可获取任何内容的索引

QModelIndex indexOfTheCellIWant = model->index(row, column, parentIndex);

然后你可以setCurrentIndex(indexOfTheCellIWant)像布鲁诺在他的回答中所说的那样打电话。

如果模型只包含一个标准的项目列表而不是树结构,那么它就更容易了。因为我们可以假设该项目是根项目 - 没有父项。

QModelIndex indexOfTheCellIWant = model->index(row, column);

使用树形结构有点棘手,因为我们不能只指定一行和一列,我们需要相对于父级指定这些。如果您需要了解这部分,请告诉我,我会解释更多。

只有一件事需要注意。选择基于单元格,而不是真正的行。因此,如果您想确保当用户选择一个单元格(或者您通过代码执行)时选择了整行,您可以通过在其自身上设置“selectionBehavior”来做到这一点。

list->setSelectionBehavior(QAbstractItemView::SelectRows);
于 2011-08-03T18:42:00.250 回答
4

您可以使用 QAbstractItemView::setCurrentIndex ( const QModelIndex & index )

于 2011-08-03T12:11:16.477 回答