у меня есть QTableView
это показывает модель со многими столбцами.
Модель содержит что-то вроде vector<my_item_with_lots_of_fields>
; для большинства приложений размер vector
ниже 5.
По эстетическим соображениям модель выглядела бы лучше, если бы каждая запись работала сверху вниз.
Одно грязное решение состоит в том, чтобы изменить модель так, чтобы индексирование строк и столбцов было переключено. К сожалению, это сломало бы другие виджеты, которые обращаются к модели.
Есть ли простой, парадигматический способ достижения этого эффекта без изменения базовой модели? Возможно поменять виджет?
Я думаю, что одним из подходов было бы создать модель прокси для этого. Затем вам нужно будет сделать два изменения:
1) метод данных
QVariant MyProxyModel::data(const QModelIndex & index,
int role = Qt::DisplayRole) const
{
return myTableModel::data(QModelIndex(index.column(), index.row()), role);
}
QVariant MyProxyModel::headerData(int section, Qt::Orientation orientation,
int role = Qt::DisplayRole) const
{
return myTableModel::headerData(section,
orientation == Qt::Horizontal ? Qt::Vertical : Qt::Horizontal, role);
}