2014-07-20 60 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); 
}