2

我有一个QTableView显示有很多列的模型。

该模型包含类似的东西vector<my_item_with_lots_of_fields>;对于大多数应用程序,大小vector小于 5。

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

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

是否有一些简单的、典型的方法可以在不改变底层模型的情况下实现这种效果?也许要更改小部件?

4

1 回答 1

1

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

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);
}
于 2014-07-20T08:13:37.860 回答