垂直布局QTableView的范式方法

时间:2014-07-20 02:48:54

标签: c++ qt qt5 qtableview qtwidgets

我有QTableView,显示包含许多列的模型。

该模型包含vector<my_item_with_lots_of_fields>之类的内容;对于大多数应用程序,vector的大小低于5.

出于审美原因,模型看起来会更好,因此每个条目都会从上到下运行。

一个肮脏的解决方案是更改模型,以便切换行和列索引。不幸的是,这会破坏访问该模型的其他小部件。

在不改变基础模型的情况下,是否有一些简单,典范的方法来实现这种效果?也许要改变小部件?

1 个答案:

答案 0 :(得分:1)

我认为一种方法是为此创建代理模型。然后,您需要进行两项更改:

1)data method

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

2)headerData method

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