2011-11-18 16 views
5

En QListView, me gustaría deshabilitar la selección múltiple de arrastre del mouse, es decir, hacer mous down en una fila, arrastrar el mouse hacia abajo y seleccionar las filas debajo mientras arrastra.Cambiar el modo de selección múltiple para QListView

Todavía me gustaría seleccionar una fila con el clic del botón CTRL.

¿Es esto posible?

Respuesta

3

Creo que la manera más fácil de hacerlo sería crear una clase derivada de QListView y luego anular su función mouseMoveEvent. Esta función en el Código Qt para QListView busca un estado de arrastre y crea un rectángulo. Creo que algo como esto podría funcionar, pero no he probado que:

void DerivedListView::mouseMoveEvent(QMouseEvent *e) { 
    if (state() != DragSelectingState) 
     QListView::mouseMoveEvent(e); 
} 
+0

nice. que hizo el trabajo. – JasonGenX

+0

no realmente. los primeros elementos tocados se seleccionan cuando se arrastra desde un espacio vacío ... –

7

Parece que haya establecido el modo de selección de la vista de lista para QAbstractItemView :: MultiSelection. Inténtelo a QAbstractItemView :: ExtendedSelection con:

listView->setSelectionMode(QAbstractItemView::ExtendedSelection); 

y ver si eso ayuda.

+0

'ExtendedSelection' es un superconjunto de' MultiSelection', por lo que también se selecciona al hacer clic + arrastrar. –

Cuestiones relacionadas