15

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

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

4

2 に答える 2

27

呼び出すだけで何でもインデックスを取得できます

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

その後setCurrentIndex(indexOfTheCellIWant)、ブルーノが彼の答えで言ったようにあなたは呼ぶことができます。

モデルにツリー構造ではなく標準のアイテムリストだけが含まれている場合は、さらに簡単です。アイテムはルートアイテムであると想定できるため、親はありません。

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

ツリー構造では、行と列を指定するだけでは不十分であるため、少し注意が必要です。親に関してこれらを指定する必要があります。この部分について知る必要がある場合は、私に知らせてください。詳細を説明します。

注意すべきことがもう1つだけあります。選択は、実際には行ではなく、セルに基づいて行われます。したがって、ユーザーがセルを選択したとき(またはコードを介して選択したとき)に行全体が選択されるようにする場合は、それ自体に「selectionBehavior」を設定することでそれを行うことができます。

list->setSelectionBehavior(QAbstractItemView::SelectRows);
于 2011-08-03T18:42:00.250 に答える
4

使用できます QAbstractItemView::setCurrentIndex ( const QModelIndex & index )

于 2011-08-03T12:11:16.477 に答える