我正在尝试让QTreeView
自动调整其内容的大小。这是我的设置:我正在尝试创建一个“智能”工具提示,QWidget
Qt.Tool | Qt.FramelessWindowHint
为WindowFlags
,效果很好。它包含一些布局,其中包含一些按钮(大小不变)和QTreeView
。现在,无论何时将行添加到QTreeView
的模型中,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)
大部分时间都有效,但并非总是如此。每隔一段时间(每隔一段时间,确切地说,但我不知道这是否是巧合),使用此代码,视图正确调整大小(即所有内容都适合,并且不需要滚动条),但滚动条不会消失,允许滚动到最后一行下方的空白区域。
答案 0 :(得分:0)
您可能想要参考此项的工作原理: http://ftp.ics.uci.edu/pub/centos0/ics-custom-build/BUILD/PyQt-x11-gpl-4.7.2/examples/layouts/flowlayout.py
可以给你一些关于你需要什么的提示。它是一个布局,你可以放入一个滚动窗口以获得isntance,当主窗口被rsize时,它将重新排序所有小部件以适应