如何设置 QTreeWidgetItem 上箭头的对齐方式
How can I set the alignment of the arrows on a QTreeWidgetItem
我希望这些 TreeWidget 箭头与 TreeWidgetItem 的顶部对齐。
我有一个 QtWidgets.QTreeWidget()
,并创建了一个自定义 QtWidgets.QTreeWidgetItem()
。
然后我设置一个自定义项目小部件self.tree_widget.setItemWidget(self.tree_widget_item, 0, self.main_widget)
因此,装饰器/箭头将自身均匀地定位在几何体的中心,但我希望它在顶部对齐。
我一直在考虑为此设置对齐方式,但我不是 100% 确定在哪里设置它,或者我是否需要通过样式设置它 sheet。如果我无法移动它,我可以创建一个自定义小部件来替换装饰器,并隐藏默认的小部件,但如果可能的话我更愿意使用这里的东西。
有任何想法吗?谢谢!
您可以重新实现 QTreeView.drawBranches
并为用于绘制每个分支的 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_())
之前 |之后:
我希望这些 TreeWidget 箭头与 TreeWidgetItem 的顶部对齐。
我有一个 QtWidgets.QTreeWidget()
,并创建了一个自定义 QtWidgets.QTreeWidgetItem()
。
然后我设置一个自定义项目小部件self.tree_widget.setItemWidget(self.tree_widget_item, 0, self.main_widget)
因此,装饰器/箭头将自身均匀地定位在几何体的中心,但我希望它在顶部对齐。
我一直在考虑为此设置对齐方式,但我不是 100% 确定在哪里设置它,或者我是否需要通过样式设置它 sheet。如果我无法移动它,我可以创建一个自定义小部件来替换装饰器,并隐藏默认的小部件,但如果可能的话我更愿意使用这里的东西。 有任何想法吗?谢谢!
您可以重新实现 QTreeView.drawBranches
并为用于绘制每个分支的 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_())
之前 |之后: