天天看點

五十七、Qt之QTreeWidget嵌套QTableWidget

一、效果

五十七、Qt之QTreeWidget嵌套QTableWidget
五十七、Qt之QTreeWidget嵌套QTableWidget

二、設計思路

三、概略代碼

//============= 第一層QTreeWidget ==================//
Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
    //擷取頂級節點
    QTreeWidgetItem *parentItem = ui->treeWidget->topLevelItem(0);
    //建立子節點
    QTreeWidgetItem *newItem = new QTreeWidgetItem(parentItem);
    //設定子節點跨越所有列(PS:否則它的寬度隻有第一列的寬度)
    newItem->setFirstColumnSpanned(true);
    //初始化 待嵌套的 widget
    CustomWidget *widget = new CustomWidget(this);
    //設定 QTreeWidget 嵌套 widget
    ui->treeWidget->setItemWidget(newItem, 0, widget);
}

//============= 第二層QTreeWidget ==================//

```cpp
CustomWidget::CustomWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::CustomWidget)
{
    ui->setupUi(this);

    //擷取頂級節點
    QTreeWidgetItem *parentItem = ui->treeWidget->topLevelItem(0);
    //建立子節點
    QTreeWidgetItem *newItem = new QTreeWidgetItem(parentItem);
    //初始化 待嵌套的 widget(CustomTableWidget 上面放了一個 QTableView)
    CustomTableWidget *widget = new CustomTableWidget(this);
    //設定 QTreeWidget 嵌套 widget
    ui->treeWidget->setItemWidget(newItem, 0, widget);
}