2011-11-18 7 views
5

W QListView chciałbym wyłączyć wielokrotne zaznaczenie myszą - tzn. Po prostu nacisnąć wiersz, przeciągnąć mysz i wybrać wiersze znajdujące się pod nią podczas przeciągania.Zmiana trybu zaznaczania wielokrotnego dla QListView

Nadal chciałbym wybrać wiersz za pomocą kliknięcia myszą CTRL.

Czy to możliwe?

Odpowiedz

3

Myślę, że najłatwiejszym sposobem na zrobienie tego byłoby utworzenie klasy pochodnej z QListView, a następnie nadpisanie jej funkcji mouseMoveEvent. Ta funkcja w Kodzie Qt dla QListView szuka stanu przeciągania i tworzy prostokąt. Myślę, że coś takiego może działać, ale nie testowałem go:

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

ładny. to wykonało zadanie. – JasonGenX

+0

niezupełnie. pierwsze dotknięte elementy zostaną wybrane podczas przeciągania z pustej przestrzeni ... –

7

Wydaje masz ustawiony tryb wyboru widoku listy do QAbstractItemView :: wielokrotny. Spróbuj ustawić QAbstractItemView :: ExtendedSelection z:

listView->setSelectionMode(QAbstractItemView::ExtendedSelection); 

i sprawdź, czy to pomaga.

+0

'ExtendedSelection' jest nadzbiorem' MultiSelection', więc wybiera również po kliknięciu + przeciągnięciu. –

Powiązane problemy