Qt 如何在QListView中选择行

Qt 如何在QListView中选择行,qt,selection,qlistview,Qt,Selection,Qlistview,我仍然在努力使用QListView,我试图在视图中选择一个特定的行,但我不知道如何做到这一点 我在StackOverflow上发现了一个类似的问题,建议使用模型的createIndex()方法,但是这个方法受到保护(可能它以前是公共的,但现在不再是了),所以对我来说不起作用。有什么建议吗?你可以使用你只要打电话就可以得到任何东西的索引 QModelIndex indexOfTheCellIWant = model->index(row, column, parentIndex); 然后你

我仍然在努力使用QListView,我试图在视图中选择一个特定的行,但我不知道如何做到这一点


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

你可以使用

你只要打电话就可以得到任何东西的索引

QModelIndex indexOfTheCellIWant = model->index(row, column, parentIndex);
然后你可以调用
setCurrentIndex(indexOfTheCellIWant)
,正如布鲁诺在回答中所说的那样

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

QModelIndex indexOfTheCellIWant = model->index(row, column);
对于树结构,它有点棘手,因为我们不能只指定一行和一列,我们需要针对父级指定它们。如果你需要了解这一部分,让我知道,我会解释更多

还有一件事要注意。选择基于单元格,而不是实际的行。因此,如果您想确保当用户选择一个单元格(或通过代码)时整行都被选中,您可以通过在单元格本身上设置“selectionBehavior”来做到这一点

list->setSelectionBehavior(QAbstractItemView::SelectRows);

谢谢,我不知道这个方法。但是,我仍然不清楚应该如何选择一行。在文档中,它是使用createIndex()编写的,但是由于它是受保护的方法,所以我不能使用它。QModelIndex的构造函数也不允许我指定行。还有别的办法吗?