QTableView

QTableView это просто графический объект, который себя отрисовывает, как и все виджеты на основе QWidget.

Ему нельзя например добавить лейоут на который плместить дочерние виджеты, т.к. у него нет изначально лейаута в отличии например от QTabWidgets или QDialog.

Главное, что у него есть метод paint и он тупо себя отрисовывает.

Всегда полезно посмотреть иерархию класса QTableView:

фотка 1

Взаимодействие QTableView с моделью данных.

Итак надо понять как заполняется данными QTableView. Это в будущем поможет решить некоторые визульные проблемки.

Наследуем все виртуальные методы от классов предков и логгируем работу таблицы.

Выясняем, что после select(..) в модели данных у таблицы сначала очищаются строки, потом заполняются заново через функцию insertRow... Все пока довольно банально.  И это очень хорошо.

Конечно модель данных взаимодействует с визуальным представлением через механизм сигнал/слот поскольку это разные ветки развития (иерархии классов). 

У класса QTableView есть полезная фича - колонки можно переставлять (например через moveSection). В результате меняется visualIndex, но logicalIndex остаётся таким же. Таким образом все продолжает работать нормально до повторного вызова метода select модели данных.

Сигналов и слотов для изучения кстати немало найдено в классах предках.

Здесь на развитие класса визуального отображения таблицы QpTableViewWrapper

Здесь один открытый проект для мирового сообщества: Развитие Qt Sql.


QTableView новые возможности