簡體   English   中英

如何在 QTreeView 的第二列中添加項目

[英]How to add items in 2nd column of QTreeView

代碼說明:

首先我創建項目,接下來我定義第一列結構,最后我嘗試定義第二列結構。

對於第一列結構,我對 QStandardItems 使用 appendRow() 方法。

對於第二列結構,我對 QStandardItemModel 使用 setItem() 方法。

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

    // QStandardItemModel
    treeModel = new QStandardItemModel(this);

    // Create Items
    QStandardItem *item_0 = new QStandardItem("Item 0");
    QStandardItem *item_0_0 = new QStandardItem("Item 0_0");
    QStandardItem *item_1 = new QStandardItem("Item 1");
    QStandardItem *item_1_0 = new QStandardItem("Item 1_0");
    QStandardItem *item_1_0_0 = new QStandardItem("Item 1_0_0");

    QStandardItem *item_2 = new QStandardItem("Item 2");
    QStandardItem *item_3 = new QStandardItem("Item 3");

    // Root Item
    QStandardItem * rootItem = treeModel->invisibleRootItem();

    //Define the tree structure
    rootItem->appendRow(item_0);
    rootItem->appendRow(item_1);

    item_0->appendRow(item_0_0);

    item_1->appendRow(item_1_0);
    item_1_0->appendRow(item_1_0_0);

    //Define 2nd column structure
    treeModel->setItem(0,1,item_2);
    treeModel->setItem(1,1,item_3);

    // QTreeView
    ui->treeView->setModel(treeModel); 

}   

此代碼導致下圖。 但我想要的是將 Item3 放在 Item2 的正下方。

在此處輸入圖片說明

有很多方法可以實現您想要的行為,但以下可能是最直接的一種。 我建議您仔細研究 Qt 文檔。 一個好主意是使用QTreeView而不是QTreeWidget ,這有點不太靈活。

完全掌握 Qt 中的 MVC 概念可能需要一些時間,但值得付出努力。 這是我的解決方案。

#include <QApplication>
#include <QStandardItemModel>
#include <QTreeView>

int main(int argc, char** args) {
    QApplication app(argc, args);
    auto model=new QStandardItemModel;

    // Create Items
    QStandardItem *item_0 = new QStandardItem("Item 0");
    QStandardItem *item_0_0 = new QStandardItem("Item 0_0");
    QStandardItem *item_1 = new QStandardItem("Item 1");
    QStandardItem *item_1_0 = new QStandardItem("Item 1_0");
    QStandardItem *item_1_0_0 = new QStandardItem("Item 1_0_0");

    QStandardItem *item_2 = new QStandardItem("Item 2");
    QStandardItem *item_3 = new QStandardItem("Item 3");

    // Root Item
    QStandardItem * rootItem = model->invisibleRootItem();

    //Define the tree structure
    rootItem->appendRow(item_0);
    rootItem->appendRow(item_1);

    item_0->appendRow(QList<QStandardItem*>{item_0_0,item_2});
    item_1->appendRow(item_1_0);
    item_1_0->appendRow(item_1_0_0);
    model->setItem(1,1,item_3);

    auto view=new QTreeView;
    view->setModel(model);
    view->show();
    app.exec();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM