web-dev-qa-db-ja.com

プログラムでQTreeViewの行を選択する

QFileSystemModelをモデルとして持つQTreeViewがあります。

QTreeViewでは、SelectionBehaviorがSelectRowsに設定されています。

私のコードでは、データセットを読み取って選択し、次の方法で選択します。

idx = treeview->model()->index(search); 
selection->select(idx, QItemSelectionModel::Select);

これにより、行ではなくセルが選択されます。 。

愚かな回避策を追加しましたが、これを正しい方法で修正したいと思います。

for (int col=0; col< treeview->model()->columnCount(); col++) 
{ 
   idx = treeview->model()->index(search, col); 
   selection->select(idx, QItemSelectionModel::Select); 
} 

それとも^^それを行う唯一の方法ですか?

19
the JinX

QItemSelectionを使用して行全体を選択することもできます。

selection->select (
    QItemSelection (
        treeview->model ()->index (search, 0),
        treeview->model ()->index (search, treeview->model ()->columnCount () - 1)),
    QItemSelectionModel::Select);

また、ユーザークリックの行選択も必要な場合は、選択動作を設定する必要があります。

treeview->setSelectionBehavior (QAbstractItemView::SelectRows)
11
Elmar de Koning

行全体を選択する場合は、次を使用する必要があります。

selection->select(idx, QItemSelectionModel::Select | QItemSelectionModel::Rows);

最初に選択をクリアしたい場合があることに注意してください。

selection->select(idx, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
23
alex