QTreeWidget中的垂直标题标签

vertical header labels in QTreeWidget

本文关键字:标题 标签 垂直 QTreeWidget      更新时间:2023-10-16

我现在有一个带有水平标题标签的QTreeWidget,我的意图是绘制只有头标签垂直,其余标签水平。

我不想在QTreeWidgets的paintEvent方法中重新实现所有内容,所以我正在考虑控制头标签的paintevent,然后调用超类paintevent

大致如下:

class MyTreeWidget: public QTreeWidget
{
  public void paintEvent (QPaintEvent *e)
  {
      ..... //Draw header labels vertically
      QTreeWidget::paintEvent(e);
  }
}

我试过在插入headerLabels时在每个字符后面插入一个n,但这是一个非常丑陋的破解方法,我真的不想这么做

我的问题是,我真的不知道如何掌握标题项或如何垂直绘制它们。有什么想法吗?

我相信您想要创建一个QHeaderView派生类,在其中更改paintEvent( QPaintEvent* ); 的默认实现

然后安装自定义的QHeaderView派生类作为MyTreeWidget类的水平头。

如果使用自定义paintEvent(),则可以使用QPainter::DrawText()手动放置字符。要么一个接一个地打印它们,每次都增加输出的y坐标,要么尝试使用Qt::TextWordWrap标志使它们自动包裹在空间上(在这种情况下,你需要制作一个非常窄的边界矩形,我相信,我还没有尝试过)。