C++ 如何在QTreeView的第2列中添加项目

C++ 如何在QTreeView的第2列中添加项目,c++,qt,C++,Qt,代码说明: 首先创建项目,然后定义第一列结构,最后尝试定义第二列结构 对于第一个列结构,我使用appendRow()方法创建QStandardItems 对于第二个列结构,我将setItem()方法用于QStandarItemModel Widget::Widget(QWidget*parent): QWidget(母公司), ui(新ui::小部件) { 用户界面->设置用户界面(此); //QS标准模型 treeModel=新的QStandardItemModel(本); //创建项目 QS

代码说明:

首先创建项目,然后定义第一列结构,最后尝试定义第二列结构

对于第一个列结构,我使用appendRow()方法创建QStandardItems

对于第二个列结构,我将setItem()方法用于QStandarItemModel

Widget::Widget(QWidget*parent):
QWidget(母公司),
ui(新ui::小部件)
{
用户界面->设置用户界面(此);
//QS标准模型
treeModel=新的QStandardItemModel(本);
//创建项目
QStandardItem*item_0=新QStandardItem(“item 0”);
QStandardItem*item_0_0=新QStandardItem(“item 0_0”);
QStandardItem*第1项=新QStandardItem(“第1项”);
QStandardItem*item_1_0=新QStandardItem(“item 1_0”);
QStandardItem*item_1_0_0=新QStandardItem(“item 1_0_0”);
QStandardItem*第2项=新QStandardItem(“第2项”);
QStandardItem*第3项=新QStandardItem(“第3项”);
//根项目
QStandardItem*rootItem=treeModel->invisibleRootItem();
//定义树结构
根项目->追加行(项目0);
根项目->追加行(项目1);
项目0->appendRow(项目0\u 0);
项目1->appendRow(项目1\u 0);
项目1\u 0->追加行(项目1\u 0\u 0);
//定义第二列结构
treeModel->setItem(0,1,item_2);
treeModel->setItem(1,1,item_3);
//QTreeView
ui->treeView->setModel(treeModel);
}   
此代码产生下图。但是我想要的是在第2项的下面有第3项


有很多方法可以实现你想要的行为,但下面可能是最简单的方法。我建议您仔细研究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();
}
#包括
#包括
#包括
int main(int argc,char**args){
QApplication应用程序(argc、args);
自动模型=新的QS标准模型;
//创建项目
QStandardItem*item_0=新QStandardItem(“item 0”);
QStandardItem*item_0_0=新QStandardItem(“item 0_0”);
QStandardItem*第1项=新QStandardItem(“第1项”);
QStandardItem*item_1_0=新QStandardItem(“item 1_0”);
QStandardItem*item_1_0_0=新QStandardItem(“item 1_0_0”);
QStandardItem*第2项=新QStandardItem(“第2项”);
QStandardItem*第3项=新QStandardItem(“第3项”);
//根项目
QStandardItem*rootItem=model->invisibleRootItem();
//定义树结构
根项目->追加行(项目0);
根项目->追加行(项目1);
item_0->appendRow(QList{item_0_0,item_2});
项目1->appendRow(项目1\u 0);
项目1\u 0->追加行(项目1\u 0\u 0);
模型->设置项(1,1,第3项);
自动查看=新建QTreeView;
查看->设置模型(模型);
查看->显示();
app.exec();
}

工作完美。Tnx很多。