我现在有一个带有水平标题标签的QTreeWidget,我打算画画 仅 headerLabels垂直,其余水平。
我不想在QTreeWidgets的paintEvent
方法中重新实现所有内容,因此我正在考虑控制标题标签的paintevent,然后调用超类paintevent
。
有些事情如下:
class MyTreeWidget: public QTreeWidget
{
public void paintEvent (QPaintEvent *e)
{
..... //Draw header labels vertically
QTreeWidget::paintEvent(e);
}
}
我在插入headerLabels时尝试在每个字符后插入一个\n
,但这是一个非常丑陋的黑客攻击和我真的不想做的事情。
我的问题是我真的不知道如何抓住标题项或如何垂直绘制它们。有什么想法吗?
答案 0 :(得分:0)
我相信您要创建一个QHeaderView
派生类,您可以在其中更改paintEvent( QPaintEvent* );
的默认实现
然后将自定义QHeaderView
派生类安装为MyTreeWidget
类的水平标题。
答案 1 :(得分:0)
如果您使用的是自定义paintEvent()
,则可以使用QPainter::DrawText()
手动放置字符。要么逐个打印它们并且每次增加输出的y
坐标,要么尝试利用Qt::TextWordWrap
标志使它们自动换行(你需要做一个非常狭窄的空间)在这种情况下,我相信边界矩形,我还没有尝试过)。