我正在尝试QTreeView
对其内容进行自动调整大小。这是我的设置:我正在尝试创建一个QWidget
带有Qt.Tool | Qt.FramelessWindowHint
as its的“智能”工具提示WindowFlags
,效果很好。它包含一个带有一些按钮的布局(其大小是恒定的)和QTreeView
. 现在,每当向QTreeView
's 模型添加行时,QTreeView
应该会自动增加其大小以避免垂直滚动条。
QSizePolicy.Expanding
在工具提示小部件上设置QTreeView
并没有改变任何东西 - 也许我在这里遗漏了一些额外的标志或其他东西。
我还尝试了以下蛮力方法:
class ToolTip:
def __init__(self):
...
self.itemView.setVerticalScrollMode(QAbstractItemView.ScrollPerPixel)
self.itemView.verticalScrollBar().rangeChanged.connect(self.resizeViewVertically)
def resizeViewVertically(self, min, max):
self.resize(self.width(), self.height() + max)
这在大多数情况下都有效,但并非总是如此。每隔一段时间(准确地说是每隔一次,但我不知道这是否是巧合),使用此代码,视图会正确调整大小(即所有内容都适合,并且不需要滚动条),但滚动条不会消失,允许滚动到最后一行下方的空白处。