Qt4 继承自同一tableModel类的两个表的不同标头

Qt4 继承自同一tableModel类的两个表的不同标头,qt4,qtableview,Qt4,Qtableview,我有两个TableView,它们继承自同一个类(TableModel),而这个类又继承自QAbstractTableModel。我想为这两个表添加标题,但每个表的标题应该不同。在我的TableModel中,我有以下方法: QVariant TableModel::headerData(int section, Qt::Orientation orientation, int role) const { if (role != Qt::DisplayRole)

我有两个TableView,它们继承自同一个类(TableModel),而这个类又继承自QAbstractTableModel。我想为这两个表添加标题,但每个表的标题应该不同。在我的TableModel中,我有以下方法:

QVariant TableModel::headerData(int section, Qt::Orientation orientation, int role) const { if (role != Qt::DisplayRole) return QVariant(); if (orientation == Qt::Horizontal) { switch (section) { case 0: return tr("Header1"); case 1: return tr("Header2"); case 2: return tr("Header3"); default: return QVariant(); } } return QVariant(); } QVariant TableModel::headerData(int节,Qt::定向,int角色)常量 { if(角色!=Qt::DisplayRole) 返回QVariant(); 如果(方向==Qt::水平){ 道岔(区段){ 案例0: 返回tr(“标题1”); 案例1: 返回tr(“标题2”); 案例2: 返回tr(“标题3”); 违约: 返回QVariant(); } } 返回QVariant(); }
但这只适用于其中一个表。如何为另一个表设置不同的标题?

一种简单的方法是为一个或另一个表视图创建代理模型,并通过代理模型覆盖标题信息。对于这个应用程序来说,应该不是很难


这就是说,我想知道是什么情况导致列在某种程度上对相同的数据有不同的含义,只是在不同的表中。

另一种简单的方法是在模型中创建一个允许您设置标题值的列。例如:

public class TableModel {
    Q_PROPERTY(QString header1 header1 setHeader1);
    QString _header1;
    // ...
public:
    QString header1() { return _header1; }
    void setHeader1(const QString& header) { _header1 = header; }
    // ...
};
然后您可以在数据函数中返回
header1()

QVariant TableModel::headerData(int section, Qt::Orientation orientation, int role) const
{
    if (role != Qt::DisplayRole)
        return QVariant();

    if (orientation == Qt::Horizontal) {
        switch (section) {
        case 0:
            return header1();

        case 1:
            return header2();

        case 2:
            return header3();

        default:
            return QVariant();
        }
    }
    return QVariant();
}

您有从表模型继承的表视图吗?是的…我有两个从表模型继承的表视图如果这两个表视图共享指向同一模型的指针,那么这将不起作用。