Интерактивная модель QSqlTableModel

Пожалуйста, не могли бы вы дать мне совет. Я использую класс QSqlTableModel для доступа к таблице базы данных и QTableView для ее просмотра. Какой сигнал какого экземпляра я должен обработать, чтобы узнать о перемещении пользователем курсора в QTableView?

Я хочу обновить содержимое TableView B после перемещения курсора в QTableView A (в таблице B есть внешние ключи для таблицы A в базе данных)

Может быть что-то из этого http://doc.trolltech.com/latest/qabstractitemmodel.html?

Спасибо.


person Community    schedule 13.04.2011    source источник


Ответы (2)


Иван, если вы говорите о табличном курсоре, вы можете перереализовать QAbstractItemView::moveCursor метод, который является виртуальным.

Если вы говорите о курсоре мыши, вы можете использовать QAbstractItemView::viewportEvent метод обнаружения события перемещения мыши. Вам нужно установить QWidget::setMouseTracking(true) в область просмотра вашего QTableView.

надеюсь, это поможет

person Barbaris    schedule 13.04.2011
comment
Спасибо! Я говорю о QAbstractItemView::moveCursor. Вы мне очень помогли - person ; 13.04.2011

Другой способ — использовать модель выбора

Использование модели выбора

Стандартные классы представлений предоставляют модели выбора по умолчанию, которые можно использовать в большинстве приложений. Модель выбора, принадлежащая одному представлению, может быть получена с помощью функции представления 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 &)));
 }
person Derick Schoonbee    schedule 13.04.2011