代码之家  ›  专栏  ›  技术社区  ›  Chris B.

在qt中,一个表头可以有多行吗?

  •  7
  • Chris B.  · 技术社区  · 15 年前

    我用的是qt4,我有一个 QTableView 它使用自定义模型显示数据。我希望表头有两行,理想情况下,第一行的一些单元格跨越多个列。这有可能吗?

    4 回复  |  直到 7 年前
        1
  •  3
  •   azalea    7 年前

    我也在寻找解决这个问题的方法。我找到了这门课: HierarchicalHeaderView 在qt-apps.org上由用户barmaglodd(krasnoshchekov pert)提供。

    这个解决方案超越了你(和我)的需要。另外,由于他们的版权声明,我不能使用他们的解决方案。

    This post Andy Shaw在blog.qt.digia.com上向您展示了如何将Qcomboboxes覆盖在头上。在我的解决方案中,我用另一个标题视图做了同样的事情。这和他们 overlaid a QTableView on a QTableView for the Qt Frozen column example . 对于这个解决方案,您需要对qTableWidget和qHeaderView进行子类化。另外,如果您想让用户调整需要额外工作的列宽。

    提示:重载sizeHint以提供“main”header view正常高度的2X高度,将主标题视图的文本与底部对齐,并在正常header view的顶部绘制另一个header view,在

    showEvent(QShowEvent* e)
    

    方法。

        2
  •  5
  •   gavaz    11 年前

    对于qtableview的多个header行,我也遇到了类似的问题。我在列标题文本中使用了一个简单的“\n”来解决它。

        3
  •  2
  •   swanson    15 年前

    您可以通过创建 QTableWidgetItem 然后使用 setHorizontalHeaderItem() . 该方法采用一个列号,因此我不确定是否允许本机跨越多个列——但是,至少可以使用相同的列号 qTableWidgetItem项目 对于多个列。

    至于在标题中使用两行,我认为目前不支持这样做。但是,您可以通过滚动自己的派生类 QTableWidget 如果你雄心勃勃。

        4
  •  2
  •   Winand    9 年前

    在…的印象下 HierarchicalHeaderView 我制作了一个python端口和一个简单的模型,用于在qtableview中显示具有多级头(multiindex)的pandas数据帧。

    这是第一个结果 dataframemodel . upd:大数据帧速度很慢