我正在使用Qt4,我有一个QTableView
,它使用自定义模型显示数据。我想在表头中有两行,理想情况下,第一行中的一些单元格跨越多列。这可能吗?
答案 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时速度很慢