Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QTreeWidget中的垂直标题标签_C++_Qt_Qtreewidget_Qtgui_Qheaderview - Fatal编程技术网

C++ QTreeWidget中的垂直标题标签

C++ QTreeWidget中的垂直标题标签,c++,qt,qtreewidget,qtgui,qheaderview,C++,Qt,Qtreewidget,Qtgui,Qheaderview,我现在有一个带有水平标题标签的QTreeWidget,我的目的是绘制 只有头部标签垂直,其余标签水平 我不想重新实现QTreeWidgets的paintEvent方法中的所有内容,因此我考虑控制标题标签的paintEvent,然后调用超类paintEvent 大致如下: class MyTreeWidget: public QTreeWidget { public void paintEvent (QPaintEvent *e) { ..... //Draw header l

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

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

大致如下:

class MyTreeWidget: public QTreeWidget
{
  public void paintEvent (QPaintEvent *e)
  {
      ..... //Draw header labels vertically
      QTreeWidget::paintEvent(e);
  }
}
在插入HeaderLabel时,我尝试在每个字符后面插入一个\n,但这是一个非常难看的方法,我并不想这样做


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

我相信您希望创建一个QHeaderView派生类,在该类中更改paintEvent QPaintEvent*的默认实现


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

如果使用自定义paintEvent,可以使用QPaint::DrawText手动放置字符。或者一个接一个地打印它们,并每次增加输出的y坐标,或者尝试使用Qt::TextWordWrap标志使它们自动在空格上换行。在这种情况下,您需要制作一个非常窄的边框。我相信,我还没有尝试过

如何安装自定义QHeaderView派生类作为水平标头?目前,我正在使用QTreeWidget::setHeaderLabelsQStringList标签设置headerLabels在您的QTreeWidget派生类的构造函数中执行此操作,setHeader new MyCustomHeader Qt::Horizontal,this;这是一个很好的建议,它很有效,但我实际上使用了QStyle来解决我的问题。