qt - 在共享相同数据模型的 2 个表中显示不同的标题名称?
问题描述
我有 2 个基于相同数据模型的不同表。它们的内容是使用自己的 QSortFilterProxyModel 生成的,基于相同的数据模型。问题是我不能给他们不同的标题名称。在以下示例中,两个表的名称都为Table2。我该怎么做才能让他们显示不同的标题名称?
QStandardItemModel* model = new QStandardItemModel();
QSortFilterProxyModel* proxyModel1 = new QSortFilterProxyModel(this);
proxyModel1->setSourceModel(model);
proxyModel1->setHeaderData(0, Qt::Horizontal, "Table1");
QSortFilterProxyModel* proxyModel2 = new QSortFilterProxyModel(this);
proxyModel2->setSourceModel(model);
proxyModel2->setHeaderData(0, Qt::Horizontal, "Table2");
解决方案
根据评论,您可能会有类似以下简单示例的内容...
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");
推荐阅读
- ctypes - dask.delayed KeyError 与分布式调度程序
- javascript - 使用 Multer 和 Uppy 上传文件
- oauth-2.0 - 具有非交互式服务帐户的 OAuth
- xamarin - 在特定时间间隔内从 API 调用更新列表视图 - xamarin.forms
- angularjs - 如何使 ng-options 从下拉列表中选择特定值?
- javascript - 重新宣布一个
即使文本相同,在 aria-live 下
- redmine - 在保留外部数据库的同时移动 Redmine 服务器
- python-3.8 - 遍历 URL 中的目录到 Python 中的根目录
- python - pytorch中的神经网络定义如何使用pyton类
- javascript - 如何在useEffect中正确设置多个状态