0

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

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

类似这样的东西:

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

在插入 headerLabels 时,我尝试\n在每个字符后插入一个,但这是一个非常丑陋的 hack,而且我真的不想这样做。

我的问题是我真的不知道如何获取标题项目或如何垂直绘制它们。有任何想法吗?

4

2 回答 2

0

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

然后将您的自定义QHeaderView派生类安装为您的类的水平标题MyTreeWidget

于 2012-07-30T13:52:23.853 回答
0

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

于 2012-07-30T13:55:19.530 回答