我实用地创建了一个QTreeWidget。
然后,我实用地添加一些项目。
然后我通过
将两个QLabel小部件添加到两个项目(QTreeWidgetItem)中Traceback (most recent call last) :
File "<pyshell#4>", Line 1, in <module>
t.forward(50)
AttributeError: 'dict' object has no attribute 'forward'
然后我尝试以实用的方式调整项目行的大小。 如果我使用
myTree->setItemWidget(item1, 0, myLabel1);
myTree->setItemWidget(item2, 0, myLabel2);
该行混乱了。但是myLabel1不是。
如果我使用
item1->setSizeHint(0, QSize(myWidth, myHeight) );
一切正常,但myLabel2的行未按位置调整为标签。
我可以做一些事情来自动将小部件(按大小和位置)调整到QTreeWidget的单元格吗?
P.S。在调整树的大小(按宽度或扩展/折叠节点的大小)后,小部件将正确更新。
答案 0 :(得分:0)
您可以尝试将小部件添加/更新为项目,例如:
QWidget* wdg = new QWidget;
QPushButton* btIcon = new QPushButton();
QLabel* lb = new QLabel();
QHBoxLayout* layout = new QHBoxLayout(wdg);
layout->addWidget(btIcon);
layout->addWidget(lb);
layout->setAlignment( Qt::AlignCenter );
wdg->setLayout(layout);
myTree->setItemWidget(item1, 0, wdg);
或者只用小部件填充树
答案 1 :(得分:0)
鉴于自动调整功能是在调整QTreeWidget的大小之后开始的,因此内部有些方法可以调整单元格中的Widget大小。 因此,我打开了QTreeWidget描述(https://doc.qt.io/qt-5/qtreewidget.html),并将所有公共功能和公共插槽全部涂成红色。当我找不到任何有用的函数时,我查看了一个父类(QTreeView)。并找到
myTree->resizeColumnToContent(0);
在调整QTreeWidget中的任何行的大小后,调用 resizeColumnToContent ,窗口小部件将始终适合单元格。
P.S。我是OP。