2011-08-08 42 views
0

我有两个tableView从继承自QAbstractTableModel的同一个类继承而来(TableModel)。我想为2个表格添加标题,但这些标题对于每个表格应该是不同的。在我的TableModel中,我有这种方法:从同一个表中继承的两个表的不同标题ModelModel类

 

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

但是,这只适用于其中一个表。我怎样才能为其他表格设置不同的标题?

+0

您有一个表模型中继承表的看法? –

+0

是的...我有两个表格视图,从表模型 – schmimona

回答

1

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

这就是说,我想知道导致列不知何故意味着某些不同的相同数据的情况,只是在不同的表中。

0

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

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(); 
} 
+0

继承,如果两个tableviews共享指针到相同的模型,那么这将无法正常工作。 – user110

相关问题