В соответствии с комментарием у вас может быть что-то вроде следующего простого примера ...
class proxy_model: public QSortFilterProxyModel {
using super = QSortFilterProxyModel;
public:
explicit proxy_model (QObject *parent = nullptr)
: super(parent)
{}
virtual QVariant headerData (int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override
{
if (section == 0 && orientation == Qt::Horizontal && role == Qt::DisplayRole)
{
return m_data.at(section).at(orientation).at(role);
}
else
{
return super::headerData(section, orientation, role);
}
}
virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole) override
{
m_data[section][orientation][role] = value;
return true;
}
private:
std::map<int/* section */, std::map<Qt::Orientation/* orientation */, std::map<int/* role */, QVariant>>> m_data;
};
Тогда ваш код становится (непроверенным) ...
auto *model = new QStandardItemModel;
auto*proxyModel1 = new proxy_model(this);
proxyModel1->setSourceModel(model);
proxyModel1->setHeaderData(0, Qt::Horizontal, "Table1");
auto *proxyModel2 = new proxy_model(this);
proxyModel2->setSourceModel(model);
proxyModel2->setHeaderData(0, Qt::Horizontal, "Table2");