使用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还是可以作为测试数据来使用

转载于:https://www.cnblogs.com/zw-h/p/4032940.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值