Qt实战开发-目录树

关键知识点

  • 使用QStandardItemModel 建立标准化项目模型,对树形控件节点操作提供用于存储自定义数据的通用模型,每个数据项被表示为类QStandardItem的对象,类QStandardItemModel将类QStandardItem表示的数据项组织起来,另一方面,作为一个模型类,它实现了QAbstractItemModel定义的接口函数,以使其他视图类能够访问模型中的数据项。
    -我们可以调用类QStandardItemModel的成员函数appendRow()向列表中添加一个数据项

代码段

#include "mytreeview.h"

MyTreeView::MyTreeView(QWidget *parent)
    : QTreeView(parent)
{
    model = new QStandardItemModel(2, 1);
    model->setHeaderData(0, Qt::Horizontal, tr("工具视图")); //设置头数据
    QStandardItem *item1 = new QStandardItem(tr("常规图形"));
    item1->setIcon(QIcon(":/Images/pic/POINT09.ICO"));
    QStandardItem *item2 = new QStandardItem(tr("控件"));
    item2->setIcon(QIcon(":/Images/pic/config.ico"));

    model->setItem(0, 0, item1); //设置项目为给定的行和列
    model->setItem(1, 0, item2);//附加一行包含项目 ,分组里的项


    QStandardItem *item3 = new QStandardItem(tr("指针"));
    item3->setIcon(QIcon(":/Images/pic/pointer.bmp"));
    item1->appendRow(item3);


    QStandardItem *item4 = new QStandardItem(tr("线段"));
    item4->setIcon(QIcon(":/Images/pic/line.bmp"));
    item1->appendRow(item4);


    QStandardItem *item5 = new QStandardItem(tr("多边形"));
    item5->setIcon(QIcon(":/Images/pic/bmp_Polygon.bmp"));
    item1->appendRow(item5);


    QStandardItem *item6 = new QStandardItem(tr("圆形"));
    item6->setIcon(QIcon(":/Images/pic/ellipse.bmp"));
    item1->appendRow(item6);


    QStandardItem *item7 = new QStandardItem(tr("图片"));
    item7->setIcon(QIcon(":/Images/pic/Resource_Bitmap.ico"));
    item1->appendRow(item7);

    QStandardItem *item8 = new QStandardItem(tr("矩形"));
    item8->setIcon(QIcon(":/Images/pic/rectangle.bmp"));
    item1->appendRow(item8);


    QStandardItem *item9 = new QStandardItem(tr("文本"));
    item9->setIcon(QIcon(":/Images/pic/File.ico"));
    item1->appendRow(item9);


    QStandardItem *item10 = new QStandardItem(tr("按钮"));
    item10->setIcon(QIcon(":/Images/pic/BUTTON.BMP"));
    item1->appendRow(item10);


    QStandardItem *item11 = new QStandardItem(tr("曲线"));
    item11->setIcon(QIcon(":/Images/pic/performance.ico"));
    item2->appendRow(item11);


    QStandardItem *item12 = new QStandardItem(tr("仪表"));
    item12->setIcon(QIcon(":/Images/pic/meter.ICO"));
    item2->appendRow(item12);

    QStandardItem *item13 = new QStandardItem(tr("进度条"));
    item13->setIcon(QIcon(":/Images/pic/ProcessBar"));
    item2->appendRow(item13);


   this->setModel(model);

}

MyTreeView::~MyTreeView()
{

}

代码中
model = new QStandardItemModel(2, 1);
model->setHeaderData(0, Qt::Horizontal, tr(“工具视图”));
QStandardItem *item1 = new QStandardItem(tr(“常规图形”));// 获取模型最顶层的根节点
第一句是设置目录的显示方式,占据的控件范围(或者说的位置),
第二句是设置头部的名称
第三句,QStandardItemModel保存的数据项表示成QStandardItem的对象。它能够表示数据项,保存项。
而QStandardItemModel *model ;中QStandardItemModel 继承自QAbstractItemModel;与此不同,类QStandardItemModel负责保存数据,每个数据项被表示为类QStandardItem的对象(类QabstractItemModel,QabstractListModel,QAbstractTableModel不保存数据,用户需要从这些类派生出子类,并在子类中定义某种数据结构来保存数据。)
类QStandardItemModel将类QStandardItem表示的数据项组织起来,形成树结构。

下面调用类QStandardItemModel的成员函数appendRow()向列表中添加一个数据项,
item1->appendRow(item3); //将该数据项作为根节点的子节点添加到树中
也可以使用item()读取一个数据项,

  • appendRow()向某个树节点添加子节点。通过多次调用该函数,可以构建一棵复杂的树。

效果图
这里写图片描述

源码下载
http://download.csdn.net/detail/osean_li/9778615

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值