如何制作一个 QheaderView 多级?

How to make a QheaderView multilevel?

我正在创建一个应用程序来保存 object 发送服务的数据。

我用 Qt 创建了一个 QStandardItemModel 类型的模型,我想用 QtableView 显示它。

但是QtableView给我显示了左边的线级。如果可能我想删除它或隐藏它。

我也有一个header的问题,我想水平分成两部分,然后将底部的相应部分垂直分成两部分。这些划分的原因是我有两个 header 具有相似的开头(通信日期和通信编号)

感谢您的回复,因为这对我来说真的很重要。

这个类型的QHeaderView不存在,但是我们可以为它创建它我们必须创建一个继承自QHeaderView的class,主要重写方法paintSection 这是负责绘制 QHeaderView.

部分的方法

但是要为任何类型的视觉设计做通用项目,我们必须保留每个部分的位置和大小信息,为此我们将创建一个模型,以了解为什么会被覆盖classes 我推荐你阅读以下link.

的内容

解释每个方法的逻辑很广泛,所以只放置实现上述项目的 link 并描述每个 class 的任务:

  • TableHeaderItem:负责保存每一项的信息,除了label之外主要是rowspan和columnspan。

  • GridTableHeaderModel:模型class提供对每个项目的访问,以便我们可以编辑和阅读每个项目

  • GridTableHeaderView:这个 class 是自定义的 QHeaderView,其中主要方法被覆盖以获得所需的外观。

  • GridTableView(可选):是一个具有直接与 GridTableHeaderView 一起工作的方法的 TableView。

输出:

注:要隐藏垂直header只需要使用hide()方法:

horizontalHeader()->hide();