我可以在Qt的表头中有多行吗?

时间:2010-02-25 17:22:55

标签: qt qt4

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

4 个答案:

答案 0 :(得分:5)

我对QTableView的多个标题行有类似的问题。我在列标题文本中使用简单的“\ n”解决了它。

答案 1 :(得分:3)

我也在寻找这个问题的解决方案。我找到了这堂课: HierarchicalHeaderView 用户Barmaglodd(Krasnoshchekov Petr)在qt-apps.org。

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

来自blog.qt.digia.com的

This post Andy Shaw向您展示了如何在标题上叠加QComboBoxes。在我的解决方案中,我用另一个标题视图做了同样的事情。这与他们overlaid a QTableView on a QTableView for the Qt Frozen column example的方式类似。对于此解决方案,您需要继承QTableWidget和QHeaderView。此外,如果您想让用户调整需要额外工作的列宽。

提示:重载SizeHint以提供'main'标题视图的正常高度的2倍高度,将主标题视图的文本与底部对齐,并将另一个标题视图绘制在正常标题视图的顶部,执行此操作在

showEvent(QShowEvent* e)

方法

答案 2 :(得分:2)

您可以通过QTableWidgetItem然后使用setHorizontalHeaderItem()制作自定义标头。该方法采用列号,因此我不确定是否允许本地跨越多个列 - 但是,至少您可以对多个列使用相同的QTableWidgetItem

至于在标题中使用两行,我不相信目前支持这一行。但是,如果您雄心勃勃,可以通过滚动自己的派生类QTableWidget来添加此功能。

答案 3 :(得分:2)

HierarchicalHeaderView的印象下,我已经创建了它的Python端口,并在QTableView中显示带有多级标头(MultiIndex)的pandas DataFrames的简单模型。

这是第一个结果dataframemodel。 upd:使用大型DataFrames时速度很慢