我仍在努力使用 QListView,我试图在视图中选择一个特定的行,但我无法弄清楚如何做到这一点。
我在 StackOverflow 上发现了一个类似的问题,它建议使用createIndex()
模型的方法,但是这种方法是受保护的(也许它曾经是公共的,但现在不再是),所以这对我不起作用。有什么建议吗?
您只需调用即可获取任何内容的索引
QModelIndex indexOfTheCellIWant = model->index(row, column, parentIndex);
然后你可以setCurrentIndex(indexOfTheCellIWant)
像布鲁诺在他的回答中所说的那样打电话。
如果模型只包含一个标准的项目列表而不是树结构,那么它就更容易了。因为我们可以假设该项目是根项目 - 没有父项。
QModelIndex indexOfTheCellIWant = model->index(row, column);
使用树形结构有点棘手,因为我们不能只指定一行和一列,我们需要相对于父级指定这些。如果您需要了解这部分,请告诉我,我会解释更多。
只有一件事需要注意。选择基于单元格,而不是真正的行。因此,如果您想确保当用户选择一个单元格(或者您通过代码执行)时选择了整行,您可以通过在其自身上设置“selectionBehavior”来做到这一点。
list->setSelectionBehavior(QAbstractItemView::SelectRows);