2011-11-18 33 views
5

QListViewでは、複数のマウスドラッグを無効にしたいと思っています。つまり、行をドラッグしてドラッグしている間にマウスを下にドラッグし、その下の行を選択します。QListViewの複数選択モードを変更する

私はまだCTRL-マウスクリックを使って行を選択したいと思います。

これは可能ですか?

答えて

3

私はそれを行う最も簡単な方法は、QListViewから派生クラスを作成し、mouseMoveEvent関数をオーバーライドすることだと思います。 QListViewのQtコードのこの関数は、ドラッグ状態を探し、矩形を作成します。私はこのような何かが働くかもしれないと思うが、私はそれをテストしていない:

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

nice。それは仕事をした。 – JasonGenX

+0

は本当にありません。空のスペースからドラッグすると、最初にタッチされたアイテムが選択されます。 –

7

あなたがQAbstractItemView ::複数選択にリストビューの選択モードを設定しているようです。

listView->setSelectionMode(QAbstractItemView::ExtendedSelection); 

を使用してQAbstractItemView :: ExtendedSelectionに設定してみてください。

+0

'ExtendedSelection'は' MultiSelection'のスーパーセットなので、クリック+ドラッグでも選択されます。 –