QTreeWidget中的垂直标题标签

时间:2012-07-30 13:38:32

标签: c++ qt qtreewidget qtgui qheaderview

我现在有一个带有水平标题标签的QTreeWidget,我打算画画 headerLabels垂直,其余水平。

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

有些事情如下:

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

我在插入headerLabels时尝试在每个字符后插入一个\n,但这是一个非常丑陋的黑客攻击和我真的不想做的事情。

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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