5

我正在尝试QTreeView对其内容进行自动调整大小。这是我的设置:我正在尝试创建一个QWidget带有Qt.Tool | Qt.FramelessWindowHintas 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)

这在大多数情况下都有效,但并非总是如此。每隔一段时间(准确地说是每隔一次,但我不知道这是否是巧合),使用此代码,视图会正确调整大小(即所有内容都适合,并且不需要滚动条),但滚动条不会消失,允许滚动到最后一行下方的空白处。

4

1 回答 1

0

您可能想参考此项目的工作原理:http: //ftp.ics.uci.edu/pub/centos0/ics-custom-build/BUILD/PyQt-x11-gpl-4.7.2/examples/layouts/flowlayout。 py

可能会给你一些关于你需要什么的提示。它是一种布局,您可以将其放入滚动窗口中,当主窗口调整大小时,它将重新排列内部的所有小部件以适应

于 2014-09-26T19:24:24.370 回答