QTreeView/QAbstractItemModel用法总结

Qt的 Model/Viel/Delegate模型/视图/委托,功能很强大,但是要熟练应用需要多动手,才能熟练掌握。

目前理解的程度很小,先写下来吧。。。

先定义model继承自QAbstractItemModel,定义model中用到的item,可以自定义,也可以继承,暂时还没有用到委托delegate

通过View->setModel();来显示视图

QTreeView

   model=new TreeModel();

 view = new QTreeView(this);

    view->setModel(model);
    view->setColumnWidth(0,150);
    view->resizeColumnToContents(1);//列宽自适应调整
    
    view->setColumnHidden(2,true);//隐藏第二列

    view->setStyleSheet("QTreeView::item{height: 25px;show-decoration-selected: 0;}"
             "QTreeView::item:selected{background-image:url(image/list_select_bg.png);}"

            );


TreeModel model=new TreeModel;//QAbstractItemModel

在插入和删除行时,方法如下:

 bool TreeModel::insertRows(int position, int rows, const QModelIndex &index)
{

 beginInsertRows(index, position, position+rows-1);
    。。。

 添加插入操作 代码  
     endInsertRows();

     return true;

}


bool TreeModel::removeRows(int position, int rows, const QModelIndex &index)
{
qDebug()<<"in removeRows";
     beginRemoveRows(index, position, position+rows-1);

 添加删除操作代码

     endRemoveRows();

     return true;
}

注意:如果要重新生成model,需要在更新model前,model->reset();本人就是通过读文件生成树结构,每次删除和插入后保存,都要更新model,如果没有model->reset(),在删除的时候会出现段错误。


后续更新。。。。。。


  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值