Парадигматический способ верстки QTableView по вертикали

у меня есть QTableView это показывает модель со многими столбцами.

Модель содержит что-то вроде vector<my_item_with_lots_of_fields>; для большинства приложений размер vector ниже 5.

По эстетическим соображениям модель выглядела бы лучше, если бы каждая запись работала сверху вниз.

Одно грязное решение состоит в том, чтобы изменить модель так, чтобы индексирование строк и столбцов было переключено. К сожалению, это сломало бы другие виджеты, которые обращаются к модели.

Есть ли простой, парадигматический способ достижения этого эффекта без изменения базовой модели? Возможно поменять виджет?

2

Решение

Я думаю, что одним из подходов было бы создать модель прокси для этого. Затем вам нужно будет сделать два изменения:

1) метод данных

QVariant MyProxyModel::data(const QModelIndex & index,
int role = Qt::DisplayRole) const
{
return myTableModel::data(QModelIndex(index.column(), index.row()), role);
}

2) метод headerData

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);
}
1

Другие решения


По вопросам рекламы [email protected]