如何在QTreeWidget中自动将小部件大小和位置自动调整到单元格?

问题描述 投票:0回答:2

我pragrammaticaly创建一个QTreeWidget。

然后我pragrammaticaly添加一些项目。

然后我将两个QLabel小部件添加到两个项目(QTreeWidgetItem)中

myTree->setItemWidget(item1, 0, myLabel1);
myTree->setItemWidget(item2, 0, myLabel2);

然后我尝试调整项目pragrammaticaly的行。如果我使用

item1->setSizeHint(0, QSize(myWidth, myHeight) );

这一行改变了。但我的标签1不是。

如果我使用

item1->setSizeHint(0, QSize(myWidth, myHeight) );
myLabel->resize(myWidth, myHeight);

一切都还可以,但我的Label2的行调整到按位置标记。

我可以做一些事情来自动调整小部件(按大小和位置)到QTreeWidget的单元格吗?

附:在调整树的大小(按宽度或展开/折叠节点调整大小)后,窗口小部件会正确更新。

qt delegates qtablewidget qtreewidget
2个回答
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);

或者只是用小部件填充树


0
投票

鉴于在调整QTreeWidget大小后自动调整启动的事实,内部有一些方法可以调整单元格中的小部件大小。所以我打开了QTreeWidget描述(https://doc.qt.io/qt-5/qtreewidget.html)和红色的所有公共功能和公共插槽。当我没有找到任何有用的功能时,我看了一个父类(QTreeView)。并找到了

myTree->resizeColumnToContent(0);

调整QTreeWidget中任何行的大小后调用resizeColumnToContent,小部件将始终适合单元格。

附:我是OP。

© www.soinside.com 2019 - 2024. All rights reserved.