【问题标题】:Show scrollbar in QTreeWidget with respect to the custom item widgets' size在 QTreeWidget 中显示关于自定义项小部件大小的滚动条
【发布时间】:2018-08-29 22:47:25
【问题描述】:

我在我的应用程序中使用 PyQt5,并使用 QTreeWidget 来显示内容。由于我需要显示富文本 (HTML),因此每个项目的文本属性都设置为“”,并且我使用所需的文本创建了单独的 QLabel。然后我使用QTreeWidget.setItemWidget。我的问题是,使用该方法,当 QTreeWidget 小于(宽度)项目的宽度时,不显示水平滚动条。这是合乎逻辑的,因为从 QTreeWidget 的角度来看,每个项目的宽度都是 0,因为它的文本是空的。

我尝试使用自定义辅助方法代替QLabel.setText 方法,之后自动调用QLabel.setFixedSize 方法,但效果不佳(每次大小相差5 到90 像素) .

如何让整个事物自动确定何时显示滚动条,以及为滚动条使用什么宽度?

MCVE

tree = QTreeWidget()
item = QTreeWidgetItem(tree)
label = QLabel()
label.setText("<b>some text here</b>")
tree.setItemWidget(item, 0, label)

【问题讨论】:

标签: python qt pyqt pyqt5


【解决方案1】:

我什至遇到同样的问题,最后这个解决方案对我有用:

  • 将 treewidget 标题 StretchLastSection 设置为 False
  • treeWidget.header()-&gt;setSectionResizeMode(column, QtWidgets.QHeaderView.ResizeToContents)

【讨论】:

  • 这个技巧有效,但仅适用于根项目(即它根据根项目的大小调整所有内容的大小)。所以基本上它只有在 TreeWidget 中只有一项时才能正常工作
  • 其实把item.setSizeHint(0, label.sizeHint()) StretchLastSection加到False就解决了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-13
  • 2014-12-22
  • 1970-01-01
  • 1970-01-01
  • 2015-11-19
  • 1970-01-01
相关资源
最近更新 更多