如何设置QTreeWidgetItem上箭头的对齐方式

如何设置QTreeWidgetItem上箭头的对齐方式,qt,pyside,qtreeview,qtreewidget,qtreewidgetitem,Qt,Pyside,Qtreeview,Qtreewidget,Qtreewidgetitem,我希望这些树状箭头与树状箭头的顶部对齐。 我有一个qtwidts.QTreeWidget(),并创建了一个自定义的qtwidts.QTreeWidgetItem() 然后,我设置了一个自定义项小部件self.tree\u小部件.setItemWidget(self.tree\u小部件\u Item,0,self.main\u小部件) 因此,装饰器/箭头将自身均匀地定位在几何体的中心,但我希望它在顶部对齐 我一直在考虑为此设置对齐方式,但不确定在哪里设置对齐方式,或者是否需要通过样式表设置对齐方式

我希望这些树状箭头与树状箭头的顶部对齐。

我有一个
qtwidts.QTreeWidget()
,并创建了一个自定义的
qtwidts.QTreeWidgetItem()

然后,我设置了一个自定义项小部件
self.tree\u小部件.setItemWidget(self.tree\u小部件\u Item,0,self.main\u小部件)

因此,装饰器/箭头将自身均匀地定位在几何体的中心,但我希望它在顶部对齐

我一直在考虑为此设置对齐方式,但不确定在哪里设置对齐方式,或者是否需要通过样式表设置对齐方式。如果我无法移动它,我可以创建一个自定义小部件来替换装饰器,并隐藏默认的小部件,但如果可能的话,我更愿意使用这里的小部件。
有什么想法吗?谢谢

您可以重新实现
QTreeView.drawBranchs
并为用于绘制每个分支的QRect设置较小的高度。如果箭头是对称的,简单地使用宽度是一个很好的值

import sys
from PySide2.QtWidgets import *

class Tree(QTreeWidget):

    def drawBranches(self, painter, rect, index):
        rect.setHeight(rect.width())
        super().drawBranches(painter, rect, index)
        

if __name__ == '__main__':
    app = QApplication(sys.argv)
    tree = Tree()
    for i in range(5):
        item = QTreeWidgetItem([f'Item {i}\n\n'])
        item.addChild(QTreeWidgetItem([f'Child {i}']))
        tree.addTopLevelItem(item)
    tree.show()
    sys.exit(app.exec_())
之前|之后:


您可以重新实现
QTreeView.drawBranchs
并为用于绘制每个分支的QRect设置较小的高度。如果箭头是对称的,简单地使用宽度是一个很好的值

import sys
from PySide2.QtWidgets import *

class Tree(QTreeWidget):

    def drawBranches(self, painter, rect, index):
        rect.setHeight(rect.width())
        super().drawBranches(painter, rect, index)
        

if __name__ == '__main__':
    app = QApplication(sys.argv)
    tree = Tree()
    for i in range(5):
        item = QTreeWidgetItem([f'Item {i}\n\n'])
        item.addChild(QTreeWidgetItem([f'Child {i}']))
        tree.addTopLevelItem(item)
    tree.show()
    sys.exit(app.exec_())
之前|之后:


太好了,这正是我想要的。谢谢遗憾的是它必须是自己的班级,但这样可能更好/更干净!我不得不以稍微不同的方式编写super,但这很可能是我正在使用的Python版本:super(CustomTreeWidget,self)。DrawBranchs(painter,rect,index)完美,这正是我想要的。谢谢遗憾的是它必须是自己的班级,但这样可能更好/更干净!我不得不以稍微不同的方式编写super,但这很可能是我正在使用的Python版本:super(CustomTreeWidget,self)