2011-08-03 22 views
6

Todavía estoy luchando con el uso de QListView, estoy tratando de seleccionar una fila en particular en la vista y no puedo encontrar la manera de hacerlo.Cómo seleccionar una fila en un QListView

Encontré una pregunta similar en StackOverflow que recomienda utilizar el método createIndex() del modelo; sin embargo, este método está protegido (tal vez solía ser público pero ya no lo es), así que eso no funciona. ¿Cualquier sugerencia?

Respuesta

15

, usted puede obtener el índice de cualquier cosa con sólo llamar

QModelIndex indexOfTheCellIWant = model->index(row, column, parentIndex); 

A continuación, puede llamar setCurrentIndex(indexOfTheCellIWant) como dijo Bruno en su respuesta.

Si el modelo contiene solo una lista estándar de elementos en lugar de una estructura en árbol, entonces es aún más fácil. Porque podemos suponer que el elemento es un elemento raíz, no padre.

QModelIndex indexOfTheCellIWant = model->index(row, column); 

Con una estructura de árbol que es un poco más difícil, ya que no podemos especificar una fila y una columna, tenemos que especificar estos con respecto a uno de los padres. Si necesita saber acerca de esta parte, hágamelo saber y le explicaré más.

Solo una cosa más a tener en cuenta. La selección se basa en celdas, no realmente filas. Por lo tanto, si desea asegurarse de que cuando el usuario selecciona una celda (o lo hace a través del código) para que toda la fila esté seleccionada, puede hacerlo configurando "selectionBehavior" en el mismo.

list->setSelectionBehavior(QAbstractItemView::SelectRows); 
+0

Los subrayados solo hacen que el código sea más difícil de leer. –

2
+0

Gracias, no sabía acerca de este método. Todavía no está claro cómo debo seleccionar una fila. En el documento, está escrito para usar createIndex() pero dado que es un método protegido, no puedo usarlo. El constructor de QModelIndex tampoco me permite especificar una fila. ¿Hay alguna otra manera? –

Cuestiones relacionadas