如何制作QheaderView多级?

问题描述 投票:2回答:1

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

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

但是QtableView向我展示了左边的线路水平。我想删除它或尽可能隐藏它。

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

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

enter image description here

c++ qt qt4 qt5 qheaderview
1个回答
2
投票

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

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

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

  • TableHeaderItem:它负责保存每个项目的信息,主要是除了标签之外的rowpan和columnspan。
  • GridTableHeaderModel:提供对每个项目的访问的模型类,以便我们可以编辑和读取每个项目
  • GridTableHeaderView:这个类是自定义的QHeaderView,其中主要方法被覆盖以获得所需的外观。
  • GridTableView(可选):是一个TableView,它具有直接使用GridTableHeaderView的方法。

输出:

enter image description here

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

horizontalHeader()->hide();
© www.soinside.com 2019 - 2024. All rights reserved.