如何将小部件的大小和位置自动调整到 QTreeWidget 中的单元格?
How to autofit widget size and position to a cell in QTreeWidget?
我按语法创建了一个 QTreeWidget。
然后我按语法添加了一些项目。
然后我通过
将两个 QLabel 小部件添加到两个项目 (QTreeWidgetItem)
myTree->setItemWidget(item1, 0, myLabel1);
myTree->setItemWidget(item2, 0, myLabel2);
然后我尝试按语法调整项目行的大小。
如果我使用
item1->setSizeHint(0, QSize(myWidth, myHeight) );
行改变了。但是 myLabel1 不是。
如果我使用
item1->setSizeHint(0, QSize(myWidth, myHeight) );
myLabel->resize(myWidth, myHeight);
一切正常,但 myLabel2 的行错误地按位置调整到标签。
我可以做些什么来自动调整小部件(按大小和位置)到 QTreeWidget 的单元格吗?
P.S。在调整树的大小(按宽度或 expand/collapse 节点调整大小)后,小部件会正确更新。
您可以尝试 adding/updating 将小部件作为项目,例如:
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);
或者只用小部件填充树
考虑到QTreeWidget调整大小后自动调整开始,里面有一些方法可以调整单元格中的小部件的大小。
因此,我打开了 QTreeWidget 描述 (https://doc.qt.io/qt-5/qtreewidget.html) 并将所有 Public 函数 和 Public 插槽 都设为红色。当我没有找到任何有用的函数时,我查看了父 class (QTreeView)。并找到
myTree->resizeColumnToContent(0);
调整 QTreeWidget 中任何行的大小后调用 resizeColumnToContent,小部件将始终适合单元格。
P.S。我是OP
我按语法创建了一个 QTreeWidget。
然后我按语法添加了一些项目。
然后我通过
将两个 QLabel 小部件添加到两个项目 (QTreeWidgetItem)myTree->setItemWidget(item1, 0, myLabel1);
myTree->setItemWidget(item2, 0, myLabel2);
然后我尝试按语法调整项目行的大小。 如果我使用
item1->setSizeHint(0, QSize(myWidth, myHeight) );
行改变了。但是 myLabel1 不是。
如果我使用
item1->setSizeHint(0, QSize(myWidth, myHeight) );
myLabel->resize(myWidth, myHeight);
一切正常,但 myLabel2 的行错误地按位置调整到标签。
我可以做些什么来自动调整小部件(按大小和位置)到 QTreeWidget 的单元格吗?
P.S。在调整树的大小(按宽度或 expand/collapse 节点调整大小)后,小部件会正确更新。
您可以尝试 adding/updating 将小部件作为项目,例如:
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);
或者只用小部件填充树
考虑到QTreeWidget调整大小后自动调整开始,里面有一些方法可以调整单元格中的小部件的大小。 因此,我打开了 QTreeWidget 描述 (https://doc.qt.io/qt-5/qtreewidget.html) 并将所有 Public 函数 和 Public 插槽 都设为红色。当我没有找到任何有用的函数时,我查看了父 class (QTreeView)。并找到
myTree->resizeColumnToContent(0);
调整 QTreeWidget 中任何行的大小后调用 resizeColumnToContent,小部件将始终适合单元格。
P.S。我是OP