2011-02-11 25 views
15

Tengo un QTreeView con QFileSystemModel como modelo.Seleccionar una fila en QTreeView programmatically

El QTreeView tiene SelectionBehavior establecido en SelectRows.

En mi código que lee un conjunto de datos para seleccionar y luego seleccionarlos a través de:

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

esta forma se selecciona una celda, no la fila. .

He agregado una solución estúpida, pero prefiero solucionarlo de la manera correcta.

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

¿O es que ^^ la única forma de hacerlo?

+4

¿Qué es 'selection'? – ssc

+1

Supongo que 'selection' es un [QItemSelectionModel] (http://doc.qt.io/qt-5/qitemselectionmodel.html). – altendky

Respuesta

11

También puede seleccionar una fila entera usando un QItemSelection:

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

Además, si también desea la selección de filas para el usuario hace clic es necesario configurar el comportamiento de selección:

treeview->setSelectionBehavior (QAbstractItemView::SelectRows) 
+0

Probando su solución. PS. Ya tenía el comportamiento SelectRows configurado (como se dijo en la segunda línea de pregunta) –

17

Si desea para seleccionar una fila completa, debe usar lo siguiente:

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

Tenga en cuenta que A veces es posible que desee primero borrar la selección:

selection->select(idx, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows); 
+2

También podría usar 'QItemSelectionModel :: ClearAndSelect' en lugar de' QItemSelectionModel :: Select' para borrar la selección de forma automática antes de seleccionar. – Gojir4

+0

Esta respuesta es muy superior debido a la simplicidad de 'QItemSelectionModel :: Rows'. Editando la respuesta para incluir la sugerencia del comentario. – Phlucious

Cuestiones relacionadas