我有2个从同一个类继承的tableView(TableModel),后者继承自QAbstractTableModel。我想为2个表添加标题,但每个表的标题应该不同。在我的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(); }
但这只适用于其中一个表格。如何为另一个表设置不同的标题?
答案 0 :(得分:2)
一种简单的方法是为一个或另一个表视图创建代理模型,并通过代理模型覆盖标头信息。对于这个应用程序,它应该不是很困难。
那就是说,我想知道导致列以某种方式对同一数据有不同意义的情况,只是在不同的表中。
答案 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();
}