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

posted @ 2014-10-18 13:08  纠纠结结  阅读(2409)  评论(0编辑  收藏  举报