2012-01-12 9 views
1

QListViewには3つの要素、A、B、Cがあります。その後、プログラムCを選択:Cを考慮して選択され、電流が素子共有されたQItemSelectionModelを持つQListViewでの予期しないシフト選択

selectionModel.setCurrentIndex(idxC, ItemSelectionModel::NoUpdate); 
selectionModel.select(QItemSelection(idxC, idxC), QItemSelectionModel::ClearAndSelect); 

次に、要素を持つ任意のマーク何もありません。その後、私は要素Bをクリックしてシフトし、A、B選択肢を表示する代わりにB、Cを表示する。

どのようなアイデアでこれを行うには?

この状況は、2つのリストビューが同じ選択モデルを共有するqtチャートの例(http://developer.qt.nokia.com/doc/qt-4.8/itemviews-chart.html)にあります。最初のビューをクリックして2番目のビューをクリックし、最初のビューをshift +クリックすると予期しない結果が得られます。

+0

「アイテムC」をクリックしてから、「アイテムB」をShift +クリックしましたか? – Karlson

+0

それは動作します。私の状況リストには10​​0のitmesがあり、別のビューから要素を選択するのが一般的です。既に選択された要素を再選択してリストビューでグループ選択を行うのは奇妙です。 – ronhartleyone

答えて

0

説明した振る舞いと、コードのレビューの中には、QAbstractItemViewがモデルの現在選択されているindexに対して以前のマウス位置に基づいてマウスのプレスイベントで選択を行うことがわかります。

QListViewをサブクラス化し、動作を変更するためにmousePressEvent関数を再実装する必要がある可能性があることを修正するには、この動作を変更します。逆に、Item Cを選択するとマウスの位置を設定することができます。

関連する問題