垂直布局QTableView的范例

Paradigmatic way to layout QTableView vertically

本文关键字:范例 QTableView 布局 垂直      更新时间:2023-10-16

我有一个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);
}
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);
}