可以通过在 QTreeWidget 中使用 QTreeWidgetItem 来包含自定义 widget,以下是一个简单的示例:
- 定义自定义 widget
// MyCustomWidget.h
#pragma once
#include <QWidget>
class MyCustomWidget : public QWidget
{
Q_OBJECT
public:
explicit MyCustomWidget(QWidget *parent = nullptr);
signals:
public slots:
};
// MyCustomWidget.cpp
#include "MyCustomWidget.h"
MyCustomWidget::MyCustomWidget(QWidget *parent) : QWidget(parent)
{
}
- 创建 QTreeWidgetItem 并将自定义 widget 添加到其中
// 创建自定义 widget 对象
MyCustomWidget *customWidget = new MyCustomWidget();
// 创建 QTreeWidgetItem 对象,并将自定义 widget 添加到其中
QTreeWidgetItem *item = new QTreeWidgetItem(ui->treeWidget);
ui->treeWidget->setItemWidget(item, 0, customWidget); // 第二个参数表示添加到第一列
- 在 QTreeWidget 中显示自定义 widget
// 设置 QTreeWidget 的列数为1
ui->treeWidget->setColumnCount(1);
// 添加根节点
QTreeWidgetItem *rootItem = new QTreeWidgetItem(ui->treeWidget);
rootItem->setText(0, "Root");
// 创建自定义 widget 对象并添加到 QTreeWidgetItem
MyCustomWidget *customWidget = new MyCustomWidget();
QTreeWidgetItem *childItem = new QTreeWidgetItem(rootItem);
ui->treeWidget->setItemWidget(childItem, 0, customWidget);