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(),在删除的时候会出现段错误。
后续更新。。。。。。