首页 > 代码库 > 使用QStandardItemModel创建子节点

使用QStandardItemModel创建子节点

以QTreeView为例子,创建子节点可以为:

QStandardItemModel *goodsModel = new QStandardItemModel(0, 1,this);    goodsModel->setHeaderData(0, Qt::Horizontal, tr("No"));//标题栏    ui->treeView->setModel(goodsModel);    ui->treeView->setEditTriggers(QAbstractItemView::NoEditTriggers);//设置每行内容不可更改//    QList<QStandardItem *> childItems;//放置子节点的容器    /*创建各个父节点*/    QStandardItem *item1 = new QStandardItem(QIcon(":/new/prefix1/find.png"), QString(tr("云宏信息")));    QStandardItem *item2 = new QStandardItem(QIcon(":/new/prefix1/cut.png"), QString(tr("销售中心")));    QStandardItem *item3 = new QStandardItem(QIcon(":/new/prefix1/copy.png"), QString(tr("研发中心")));    QStandardItem *item4 = new QStandardItem(QIcon(":/new/prefix1/asave.png"), QString(tr("开发")));    goodsModel->appendRow(item1);    goodsModel->appendRow(item2);    goodsModel->appendRow(item3);    goodsModel->appendRow(item4);//    /*把子节点放到childItems容器中*///    childItems.push_back(item1_1);//    childItems.push_back(item1_2);//    childItems.push_back(item1_3);//    childItems.push_back(item1_4);//    item1->appendRows(childItems);//    childItems.clear();//清除容器,以便下次使用//    QStandardItem *item2 = new QStandardItem(QString(tr("群组")));//    goodsModel->appendRow(item2);//    /*创建各个子节点*///    QStandardItem *item2_1 = new QStandardItem(QIcon(":/new/prefix1/undo.png"), QString(tr("知库群")));//    QStandardItem *item2_2 = new QStandardItem(QIcon(":/new/prefix1/editor.png"), QString(tr("知库意见收集群")));//    /*把子节点放到childItems容器中*///    childItems.push_back(item2_1);//    childItems.push_back(item2_2);//    item2->appendRows(childItems);//    childItems.clear();ui->treeView->expandAll();

返回QStandardItemModel下所有item的内容代码:

QList<QStandardItem*> YunFile::returnTheItems(){   return goodsModel->findItems("*", Qt::MatchWildcard | Qt::MatchRecursive);}void YunFile::iterateOverItems(){   QList<QStandardItem*> list = returnTheItems();   foreach(QStandardItem* item, list)   {        qDebug()<<item->text(); //      QModelIndex index = item->index(); //      qDebug()<<index.internalPointer();   }}

PS:这都是使用Qt自带的模型绑定数据,开发过程中更多的则是自定义一个模型,不过QStandardItemModel还是可以作为测试数据来使用

使用QStandardItemModel创建子节点