1

アドバイスをお願いします。QSqlTableModelクラスを使用してデータベーステーブルにアクセスし、QTableViewを使用してデータベーステーブルを表示しています。ユーザーがQTableViewでカーソルを移動することを知るために、どのインスタンスを処理する必要があるかを示すシグナルは何ですか?

QTableView Aでカーソルを移動した後、TableView Bのコンテンツを更新したい(テーブルBにはデータベース内のテーブルAへの外部キーがあります)

このhttp://doc.trolltech.com/latest/qabstractitemmodel.htmlからいくらかかもしれませんか?

ありがとう。

4

2 に答える 2

2

別の方法は、選択モデルを使用することです

選択モデルの使用

標準ビュークラスは、ほとんどのアプリケーションで使用できるデフォルトの選択モデルを提供します。1つのビューに属する選択モデルは、ビューのselectionModel() 関数を使用して取得でき、を使用して多くのビュー間で共有setSelectionModel()できるため、通常、新しい選択モデルを作成する必要はありません。

共有選択モデルを使用している場合は、どちらを変更してもビューが更新されます。その後、それに反応することができます。選択フラグは、セル、行、または複数の選択が必要かどうかを制御します。

選択の操作も参照してください。

//selection changes shall trigger a slot
     QItemSelectionModel *selectionModel= treeView->selectionModel();
     connect(selectionModel, SIGNAL(selectionChanged (const QItemSelection &, const QItemSelection &)),
             this, SLOT(selectionChangedSlot(const QItemSelection &, const QItemSelection &)));
 }
于 2011-04-13T19:23:05.410 に答える
2

Ivan、テーブルカーソルについて話している場合は、仮想の QAbstractItemView::moveCursorメソッドを再実装できます。

マウス カーソルについて話している場合は、QAbstractItemView::viewportEventメソッドを使用してマウス移動イベントを検出できます。QWidget::setMouseTracking(true) を QTableView のビューポートに設定する必要があります。

それが役立つことを願っています

于 2011-04-13T17:46:55.283 に答える