0

ExtendedSelection 属性を持つ QTreeView があります (ユーザーは連続していない複数のセル範囲を選択できます)。

アプリでこれらの複数のセルを選択してから値を入力し、すべてのセルがその値を取得できるようにしたいと考えています。

私の問題は、モデルに渡されるセルの全範囲を取得する方法がわからないことです。現在、setData メソッドに渡されるインデックスはアクティブ セルのみであり、選択されたセルの全範囲ではありません。

以前は、モデルが変更されるたびに現在選択されている範囲をビューに保存し、それを使用して変更するセルを制御していました。これは一種のハッキーに思えますが、より優れたエレガントなソリューションを誰かが持っているのではないかと思います。

ちなみに、私は PyQt を使用していますが、これは QT 自体にも当てはまると思います。

ありがとう!

4

1 に答える 1

2

QAbstractItemView クラスのselectionModelメソッドを使用して、選択したインデックスを反復処理し、対応するセルの値を変更できると思います。以下に小さな例を示します。

foreach (QModelIndex index, ui->treeView->selectionModel()->selectedIndexes())
{
    qDebug() << "Changing index " << index.row();
    ui->treeView->model()->setData(index, "new data");
}

これが役に立てば幸いです、よろしく

于 2010-11-11T22:56:57.067 に答える