2014-07-20 34 views
2

我有一个QTableView,它显示了一个包含许多列的模型。垂直布局QTableView的典型方法

该模型包含像vector<my_item_with_lots_of_fields>;对于大多数应用而言,vector的尺寸小于5.

出于美学原因,模型看起来会更好翻转,以便每个条目从上到下运行。

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

有没有一些简单的,范式的方式来实现这种效果而不改变基础模型?也许要更改小部件?

+0

我想你的意思是270度,而不是90,但我编辑的问题的方式,更具人性化的可读性。学位可能会让一些人感到困惑。 – lpapp

+0

我认为问题可以更清楚。通常,你想要的是被描述为转置。 – user2672165

回答

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