我得到了一个QTreewidget,我希望尽可能小,可能只有一个分支。但我希望大小根据扩展或崩溃的方式而改变。以及从适合填充部件的尺寸开始。PyQt5中QTreeWidget的动态大小
我通过添加QTreeWidgetItems(其获得TreeWidget作为父项),然后再次创建QTreeWidgetItems(其获得上述QTreeWidgetItem作为父项)来制作QTreewidget。
现在,它开始像左边的图像,但我希望它开始像正确的。(这是最小尺寸是什么,当你调整窗口大小。)
如何在开始时将其大小调整为最小尺寸?
另外,我怎样才能调整它,说我调整它时,缩进复选框消失(隐藏),以便占用更少的空间。现在,最小尺寸仍然是什么,当它们是可见的时候。
Bonus:当我改变样式时,最小尺寸变得更小,并且让我得到最小尺寸的滚动条,尽管不知道我改变了什么,因为它只发生在我更改样式表时。
根据要求,这是代码,这是一大堆混乱,因为它只是在进行中。这是我制作树的课程。
class paramTree(QTreeWidget):
def __init__(self, Options: dict):
super().__init__()
self.setExpandsOnDoubleClick(False)
self.setHeaderHidden(True)
self.setRootIsDecorated(False)
self.Main = self.makeOption(Options['name'], self, Options['state'],0,Options['tooltip'])
self.Options=[]
if Options['options'] is not None:
print(Options['options'])
for number, choice in enumerate(Options['options']):
if Options['Active option'] == number:
sub = self.makeOption(choice, self.Main,True,1)
sub.setFlags(sub.flags()^Qt.ItemIsUserCheckable)
else:
sub = self.makeOption(choice, self.Main,False,1)
self.Options.append(self.indexFromItem(sub))
def makeOption(name, parent, checkstate, level=0, tooltip=None):
mainItem = QTreeWidgetItem(parent,[name])
if tooltip:
mainItem.setToolTip(0,tooltip)
if checkstate:
mainItem.setCheckState(0, Qt.Checked)
else:
mainItem.setCheckState(0, Qt.Unchecked)
mainItem.setExpanded(True)
return mainItem
这只是放在上图中的小部件。该类需要一个字典,其中包含名称/选项/工具提示信息和带名称的列表,最终生成子复选框。这是完成4次,所以4个treewidgets。
此外,这是一个可以传递给班级的词典。虽然并非全部都使用了。
optiondict={
"Active option": 1,
"Command": "",
"dependency": None,
"name": "Convert to audio",
"options": [
"mp3",
"aac",
"flac"
],
"state": True,
"tooltip": "Text here"
}
请显示您的代码 – eyllanesc
开头显示的大小不取决于QTreeWidget,但取决于布局。 – eyllanesc
@eyllanesc添加了代码。我使用QVBoxLayout来添加自定义的QTreeWidget,但是在创建之前或之后添加拉伸,对整体形状没有影响。 – Thomasedv