2011-08-03 50 views
6

QListViewの使用にはまだ苦労しています。ビュー内の特定の行を選択しようとしていますが、これを行う方法がわかりません。QListViewで行を選択する方法

モデルのcreateIndex()メソッドを使用することを推奨するStackOverflowで同様の質問が見つかりましたが、このメソッドは保護されています(おそらく公開されていましたが、もはやそうではありませんでした)。なにか提案を?

答えて

15

を使用することができます。

モデルにツリー構造ではなくアイテムの標準リストだけが含まれている場合は、さらに簡単です。そのアイテムはルートアイテムであるとみなすことができるので、親は存在しません。私たちは、行と列を指定することはできませんので、それは、少しトリッキーです、ツリー構造で

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

、私たちは、親に対するこれらを指定する必要があります。この部分について知っておく必要がある場合は、私に知らせてください。

もう1つ注意してください。選択は、実際の行ではなく、セルに基づいています。したがって、ユーザーがセル全体を選択したとき(またはコードを使用しているとき)に、行全体が選択されていることを確認するには、そのセルに「selectionBehavior」を設定します。

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

下線は、コードを読みにくくします。 –

2

あなたはあなただけのブルーノは、彼の答えに言ったように、あなたはsetCurrentIndex(indexOfTheCellIWant)を呼び出すことができます

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

を呼び出して何のインデックスを取得することができますQAbstractItemView::setCurrentIndex (const QModelIndex & index)

+0

ありがとう、私はこの方法について知りませんでした。しかし、どうやって行を選択すべきかはまだ分かりません。ドキュメント上では、createIndex()を使用するように書かれていますが、それは保護されたメソッドなので、使用できません。 QModelIndexのコンストラクタでは、行を指定することはできません。他の方法はありますか? –

関連する問題