У меня есть подкласс
class TableModel : public QAbstractTableModel
Я переопределяю метод headerData
следующим образом:
QVariant TableModel::headerData(int section, Qt::Orientation orientation, int role) const
{
if (role == Qt::DisplayRole && orientation == Qt::Horizontal) {...}
if (role == TableModel::CurrencyRole && orientation == Qt::Horizontal) {...}
return QVariant();
}
У меня есть метод, который устанавливает QTableView
следующим образом, используя TableModel* table
void A::SetDisplay(QTableView* table_view, QString filter, int role, int sort_role)
{
proxyModel = new QSortFilterProxyModel(this);
proxyModel->setSourceModel(table);
proxyModel->setDynamicSortFilter(true);
proxyModel->setSortRole(sort_role);
table_view->setModel(proxyModel);
table_view->setSortingEnabled(true);
table_view->setSelectionBehavior(QAbstractItemView::SelectRows);
table_view->horizontalHeader()->setStretchLastSection(true);
table_view->verticalHeader()->hide();
table_view->setEditTriggers(QAbstractItemView::NoEditTriggers);
table_view->setSelectionMode(QAbstractItemView::SingleSelection);
proxyModel->setFilterRegExp(QRegExp(filter, Qt::CaseInsensitive));
proxyModel->setFilterKeyColumn(1);
proxyModel->sort(0, Qt::AscendingOrder);
connect( table_view->selectionModel(),
SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
this, SIGNAL(selectionChanged(QItemSelection)));
}
У меня есть два QTableView
объекта ViewA
и viewB
. Мне нужно, чтобы ViewA
имел заголовок с role == Qt::DisplayRole
и viewB
, чтобы иметь заголовок с role == TableModel::CurrencyRole
. Как я могу изменить headerData для каждого представления, используя роль.
Спасибо, и, пожалуйста, дайте мне знать, если я пропустил какие-либо детали или что-то неясно в моем вопросе.