QTableView c QSqlTableModel

Вот некий QTableView с моделью данных QSqlTableModel. Что тут особенного? Хотелось сделать так, чтобы значения трех колонок отображались в одной ячейке (естественно без редактирования только отображение).

Визуально многострочное отображение ячейки достигается через символ перевода строки (\n, все банально).

фотка 1

В первом поле собирается на самом три поля из текущей строки. Делается это просто - через переопределение data модели данных. Это иногда очень удобно.

Выделение строки желтым делается через стили: QTableView::item:selected

Работают через стили так же margin и padding для ячеек.

Что не получается никак?  Нельзя закруглить края ячеек через стили (border-radius).

Иногда может показаться, что нельзя убрать какую-то рамку между столбцами (на первый взгляд). Причем  цвет этой рамки похож на цвет фона  QTableView.

Но оказывается, если просто пройтись отладчиком по функции paintEvent (исходники Qt) ,то сразу выясняется как убрать рамку можно просто через метод setShowGrid(false).

фотка 2

Что еще вызывает трудности? Например выделить строку программно. То есть при clicked она выделяется нормально, а вот программно при открытия QTableView как сделать выделение первой строки? Ответ не совсем тривиальный, у нас заработало только без ui форм (как ни странно) с такими параметрами инициализации (примерно):

view_receipts->setFocus(Qt::NoFocusReason);

view_receipts->setSelectionBehavior(QAbstractItemView::SelectRows);

view_receipts->setSelectionMode(QAbstractItemView::SingleSelection);

view_receipts->setEditTriggers(QTableView::NoEditTriggers);

Надо отметить, что через стили вариация выделения ячейки  QTableView::item:selected{....} не работает! Примечание: Qt 4.8.1.

После пристального изучения отрисовки QTableView на странице QTableView новые возможности оказалось, что выделение  ячейки, строки и т.д. происходит в методе setSelection / коллбек в select. 

В двух словах выделения строки целиком ищем в вертикальном хэдере.


Файлы для скачивания

* QTableView и QStandardItemModel [zip]
Тестовый проект на Qt 4.8.1