如何制作QheaderView多级?

时间:2017-09-28 12:54:50

标签: c++ qt qt4 qt5 qheaderview

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

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

但是QtableView向我显示了左边的行级别。我想删除它或尽可能隐藏它。

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

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

enter image description here

1 个答案:

答案 0 :(得分:1)

这种类型的QHeaderView不存在,但我们可以为它创建它,我们必须创建一个继承自QHeaderView的类,并重写方法paintSection,这是方法绘制QHeaderView的部分费用。

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

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

  • TableHeaderItem:除了标签外,它还负责保存每个项目的信息,主要是行数和列数。

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

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

  • GridTableView(可选):是一个TableView,它具有直接使用GridTableHeaderView的方法。

输出:

enter image description here

注意:要隐藏垂直标头,只需使用hide()方法:

horizontalHeader()->hide();