QT中的item views与Item widgets控件的用法总结


0、前言

在使用QT做数据表格展示的时候,很大部分要用到表格,列表或者类型树形的结构,QT中常用的控件显示有item view(List 、Tree、Table、Colum、undo view)还有 item wigets(List 、Tree、Table、Colum、undo view)如何选用呢,主要看两者区别和联系:

0.1 联系

在这里插入图片描述
从继承关系来说, item wigets都是继承来自对应的 item wiew,在功能上一般来说items widget更易用。
在这里插入图片描述

0.2 区别

1、 item wigets 使用起来更简单,而 item wiew 的用法相对比较复杂。
2、item views 可以存储大量的数据(例如几十万甚至几百万),用户浏览表格中的数据时不会出现卡顿等现象;尽管 item wigets 也能用来存储大量的数据,但用户使用时可能出现卡顿等现象,且显示的数据越多,类似的现象越明显。
3、二者在加载数据源时候不一样:item views 通过数试图/模型方式将数据与展示分开,所以使用时还需做数据的绑定,同事修改数据直接在model修改,item wigets数据来源可认为通过函数正常加载,使用起来更方便。

以下以一个具体的例子展示( item wigets 选用QTableWidget , item wiew 选用QTableView )

4、其他的view主要功能:

QListView:用于显示单列的列表数据,适用于一维数据的操作
QTreeView:用于显示树状结构数据,适用于树状结构数据的操作
QTableView:用于显示表格状数据,适用于二维表格型数据的操作
QColumnView:用多个QListView显示树状层次结构,树状结构的一层用一个QListView显示
QHeaderView:提供行表头或列表头的视图组件,如QTableView的行表头和列表头
UI 控件面板上有这两种类型,当然也可以直接在定义。


1、item views(以QTableView为例子)

view使用简单代码如下:(省略部分头文件的包含)

Widget::Widget(QWidget *parent): QTableView(parent)
{
   QStandardItemModel* model = new QStandardItemModel(this);
   model->setItem(0, 0, new QStandardItem("test1")); 
   model->setItem(0, 1, new QStandardItem("test2"));
   model->setItem(0, 2, new QStandardItem("test3"));
   this->setModel(model);
}

很简单,直接一个view塞进去一个model,所有数据的修改都在model函数,界面的展示都在view上,这里虽然没有出现代理,但是其实已经使用默认的代理:QStyledItemDelegate;

2、item widgets(以QTableWidget为例子)

QTableWidget使用简单代码如下:(省略部分头文件的包含)

    //设置表头
    TableWidget.setHorizontalHeaderLabels(QStringList() << "1" << "2" << "3");
    //设置表格中每一行的内容
    TableWidget.setItem(0,0,new QTableWidgetItem("test1"));
    TableWidget.setItem(0,1,new QTableWidgetItem("test1"));

对新手很友好,设置简单。

3、自定义

在这里插入图片描述
我自己理解的视图-模型-代理之间的关系:试图其实就是展示的部分,比如ui展示部分,模型其实是数据的一种集合方式,代理其实定义一种如何在试图展示数据的方式,三者都有默认的类型。
这里只说View/model情况,什么情况下需要重新编辑model或者delegeta呢
1、在使用标准的model,如QStandardiTemModel,在提供数据的时候,可能达不到我们想要的优化,比如实时数据的时候,这时候我们可以重新继承QStandardiTemModel或者QAbstractItemModel 重新实现 data函数
2、在重新定义delegate的时候,主要是为了定制化的东西,如在表格中有下拉框,勾选框这样的内容,是默认的情况下无法达到需求,此时需要自定义delegate。
在这里插入图片描述
在这里建议主要建议继承自QStyledItemDelegate(下面懒得打字)
在这里插入图片描述


总结

1、QTreeView 自定义model:大数据量显示 – 性能和内存的优化
2、QT官方文档

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂的挖掘机

谢谢大家的厚爱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值