Pergunta

Eu tenho um QTreeView com QFileSystemModel como modelo.

O QTreeView tem SelectionBehavior definido para SelectRows.

No meu código eu leia um conjunto de dados para selecionar e, em seguida, selecioná-los através de:

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

Isso seleciona uma célula, não a linha ..

Adicionou um estúpido solução, mas seria bastante corrigir este o caminho correto.

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

Ou que é ^^ a única maneira de fazê-lo?

Foi útil?

Solução

Você também pode selecionar uma linha inteira usando um QItemSelection:

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

Além disso, se você também quer que a seleção de linha para o usuário cliques que você precisa para definir o comportamento de seleção:

treeview->setSelectionBehavior (QAbstractItemView::SelectRows)

Outras dicas

Se você deseja selecionar uma linha inteira, você deve usar o seguinte:

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

Observe que você pode, por vezes, primeiro quero para desmarcar a seleção:

selection->select(idx, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top