如何在QListView中选择一行

lau*_*ent 13 qt selection qlistview

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

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

Liz*_*Liz 20

你可以通过调用得到任何东西的索引

QModelIndex indexOfTheCellIWant = model->index(row, column, parentIndex);
Run Code Online (Sandbox Code Playgroud)

然后你可以打电话给setCurrentIndex(indexOfTheCellIWant)布鲁诺在他的回答中说.

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

QModelIndex indexOfTheCellIWant = model->index(row, column);
Run Code Online (Sandbox Code Playgroud)

使用树结构它有点棘手,因为我们不能只指定行和列,我们需要针对父类指定它们.如果您需要了解这部分,请告诉我,我会解释更多.

还有一件事需要注意.选择基于单元格,而不是真正的行.因此,如果您想确保当用户选择一个单元格(或您通过代码完成)选择整行时,您可以通过在其自身上设置"selectionBehavior"来实现.

list->setSelectionBehavior(QAbstractItemView::SelectRows);
Run Code Online (Sandbox Code Playgroud)