22

我有一个以 QFileSystemModel 作为模型的 QTreeView。

QTreeView 将 SelectionBehavior 设置为 SelectRows。

在我的代码中,我读取了一个要选择的数据集,然后通过以下方式选择它们:

idx = treeview->model()->index(search); 
selection->select(idx, QItemSelectionModel::Select);

这会选择一个单元格,而不是行。.

添加了一个愚蠢的解决方法,但宁愿以正确的方式解决这个问题。

for (int col=0; col< treeview->model()->columnCount(); col++) 
{ 
   idx = treeview->model()->index(search, col); 
   selection->select(idx, QItemSelectionModel::Select); 
} 

或者那是^^唯一的方法吗?

4

2 回答 2

29

如果要选择整行,则应使用以下内容:

selection->select(idx, QItemSelectionModel::Select | QItemSelectionModel::Rows);

请注意,您有时可能首先要清除选择:

selection->select(idx, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
于 2012-04-09T14:38:54.937 回答
12

您还可以使用 QItemSelection 选择整行:

selection->select (
    QItemSelection (
        treeview->model ()->index (search, 0),
        treeview->model ()->index (search, treeview->model ()->columnCount () - 1)),
    QItemSelectionModel::Select);

此外,如果您还想为用户点击选择行,则需要设置选择行为:

treeview->setSelectionBehavior (QAbstractItemView::SelectRows)
于 2011-02-11T10:55:20.553 回答