QTableView和QTableWidget之间的联系 和 区别?什么时候该用QTableView,什么时候该用QTableWidget?

news2024/12/28 19:59:49

参考:tableview与tablewidget的区别_wx64f5321a2db60的技术博客_51CTO博客

QTableView 和 QTableWidget 是 Qt 中用于显示和编辑表格数据的两个不同的部件,它们之间存在一些重要的区别:

一、主要区别是:QTableView可以使用自定义的数据模型来显示内容(也就意味着使用时先要通过setModel来绑定数据源),而QTableWidget则只能使用 标准的数据模型。

                

           

二、不同角度看:

1. 数据模型方面:
        QTableView 使用 Qt 的模型\视图架构(Model-View Architecture)。它要与一个数据模型(通常是 QAbstractTableModel 或其子类)一起使用,以管理和呈现表格数据。数据模型负责存储和提供数据,而视图部件负责显示和交互。
        QTableWidget 是一个自包含的部件,不需要外部数据模型。它直接管理和存储表格数据,而不需要额外的模型。


2. 使用场景区别:
         QTableView 通常更灵活和强大,适用于复杂的表格数据和需要高度定制的场景。但使用它需要编写更多的代码,包括自定义数据模型和委托(Delegate)来自定义表格外观和交互。
        QTableWidget 更容易上手,特别适用于快速创建简单的表格。你无需创建额外的数据模型或委托,可以直接在 QTableWidget 中添加、编辑和删除表格数据。

3. 是否能绑定数据源:
        QTableView 可以连接到各种不同的数据源,包括数据库、自定义数据结构、CSV 文件等。你可以根据需要实现自定义的数据模型来处理这些数据源。
        QTableWidget 仅适用于小型表格或简单数据,因为它不支持直接连接到复杂的数据源。你需要手动将数据添加到 QTableWidget 中。

4. 性能方面:
        QTableView 在处理大量数据时可能具有更好的性能,因为它支持按需加载数据,并且可以优化内存使用。
        QTableWidget 在处理大量数据时可能占用更多内存,因为它将数据直接存储在部件中。对于大型数据集,QTableView 更适合。

5. 自定义性:
        QTableView 允许你在视图上应用更高级的自定义,包括自定义单元格渲染、编辑委托、行列排序、过滤等。这使得它适用于更复杂的定制需求。
        QTableWidget 的自定义性相对有限,适合较简单的表格需求,但可能无法满足复杂的需求。

三、总结

       总之,QTableView 适用于需要处理复杂、大型数据集和具有高度定制需求的表格应用,而 QTableWidget 更适用于简单的、快速创建的表格,特别是对于小型数据集和无需复杂数据模型的场景。你的选择将取决于项目的需求和复杂性。

具体:

3.1 如果要类似“自绘”功能(不同列或单元格显示不同颜色、功能:QSpintBox\checkbox\edit\link等功能)=》使用QTableView + 数据模型Model + 自定义代理\委托;

3.2 如果什么特殊功能都不要,只是简单的显示一个表格=》使用QTableWidget就够用!

如下图:在表格中的某列使用QComboBox,所以使用QTableView

如下图:普通表格,使用QTableWidget

//开始添加一行
ui.tableWidget->insertRow(0);
ui.tableWidget->setItem(0, 0, new QTableWidgetItem("new row 0"));

//插入QIcon 图片
ui.tableWidget->setItem(0, 1, new QTableWidgetItem("new row 1"));
ui.tableWidget->item(0, 1)->setIcon(QIcon("test.jpg"));

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1368541.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

拥有影响力,项目经理才能如鱼得水

优秀的项目经理,不仅需要具备卓越的组织和协调能力,还需要拥有足够的影响力,以便能够推动项目的顺利进行。然而,现实情况是,许多项目经理并没有意识到影响力的重要性,导致他们在工作中事半功倍,…

中国建设银行 关于解决微软升级导致插入网银盾无法自动打开企业网银的通知

关于解决微软升级导致插入网银盾无法自动打开企业网银的通知 发布时间:2023-10-18 尊敬的客户: 近期Windows操作系统升级会禁止使用IE浏览器,可能会导致您在插入网银盾后无法自动弹出企业网银登录页面,您可以通过以下方式解决&…

一篇文章带您了解如何实现WordPress主题/插件本地化翻译

要实现WordPress主题和插件的本地化翻译就需要了解什么是国际化和本地化以及WordPress是如何实现国际化和本地化的。 什么是国际化? 国际化是为软件(在本例中为 WordPress)提供多语言支持的过程。国际化通常缩写为 i18n,其中 18 代…

Zoho Mail企业邮箱:跨境协作的利器,荣登Top榜单

在全球化的商业环境中,高效的协作工具对于企业及个人来说都至关重要。邮件因其自身规格正式、全球通用等特点,在跨境通信场景中仍然是最高频使用的工具之一。 Zoho Mail企业邮箱因邮件抵达率高,数据加密严,纯净无广告,…

数据分析求职-常见面试题前言

今天和大家聊聊数据分析求职常见面试题,这是这个系列的第一篇文章,但是我不想开始就直接罗列题目,因为这样的文章实在太多了,同学们的兴趣程度肯定一般。所以,我想先和大家聊聊在准备面试题时候通常遇到的困扰&#xf…

京东年度数据报告-2023全年度打印机十大热门品牌销量(销额)榜单

2023年度,打印机消费市场的销售总量呈现下滑。根据鲸参谋平台的数据显示,京东平台上打印机市场的年度销量为650万,同比下滑约9%;销售额将近55亿,同比下滑约10%。 在这里,鲸参谋平台综合了京东平台上电脑办公…

第17集《佛法修学概要》

戊四、业果轻重 诸位法师慈悲!陈会长慈悲! 诸位学员!阿弥陀佛! 请大家打开讲义第四十二页。 我们讲到戊四、业果轻重。业果的轻重有三段:第一个约心;第二个约境;第三个约相续。我们讲到第二…

Vue3+Vite打包跨平台(七牛、阿里OSS)上传部署前端项目

1、业务场景 阅读之前,想了解一下各位观众老爷们,你们公司的项目是怎么部署的: 1.本地打包手动上传服务器; 2.本地打包自动上传服务器; 3.代码仓库流水线自动构建; 4.其他…; 我们用的第3种部…

认知能力测验,⑦如何破解类比推理类测试题?

关于认知能力测评,今天这稿算是最后一篇,一共写了7篇,分别是数字推理、逻辑思维、语言常识、数量关系、图形推理、逻辑判断、和类比推理。 不论是校招、社招、网申、还是行测,在线人才测评已经是普遍普及的想象,而认知…

BUUCTF--ciscn_2019_s_31

这题是一题ret2csu,先查看下保护: 64位架构的程序,那么传参就是寄存器传参了。开启了NX,也不存在ret2shellocde。接下来黑盒测试下: 输入一个字节都能触发段错误,并且还跟了一串不知道啥来的东西,盲猜是栈上…

HTML5+CSS3小实例:弹出式悬停效果

实例:弹出式悬停效果 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><m…

[Markdown] Markdown常用快捷键分类汇总

文章目录 Markdown1、标题2、列表3、强调4、链接和图片5、代码和公式6、表格和任务列表7、引用8、分割线9、脚注10、目录11、注释12、定义 Markdown Markdown是一种轻量级的标记语言&#xff0c;可以让你用简单的语法来编写格式丰富的文档。 Markdown编辑器是一种专门用于编辑…

c++学习:文件输入输出类模板

目录 头文件 常用类模板 basic_ifstream文件输入类模板 模板原型 模板的成员类型和成员对象和成员函数 文件输入类模板的容器对象 实例 basic_ifstream文件输出类模板 模板原型 模板的成员类型和成员对象和成员函数 实例 basic_ifstream文件输出类模板 模板原型 …

Certum与Geotrust的SSL证书区别

Certum和GeoTrust都是知名的CA认证机构&#xff0c;这两个品牌下的SSL证书在多个方面存在一些差异。今天就随SSL盾小编了解Certum与Geotrust证书的区别。 一、Certum机构背景 Certum是波兰的一家CA认证机构&#xff0c;成立于2002年&#xff0c;至今已有近20多年的历史。旗下有…

在NR中,什么是PDCCH order?

根据38.300中触发RA的场景&#xff0c;PDCCH Order 发起的随机接入对应的上图中橙框中的过程&#xff0c;即用于上行失步后&#xff0c;当gNB有下行数据要发送时&#xff0c;会使用PDCCH Order强制UE发起RACH以重新完成上行同步。 配置有SUL的小区进行RA时&#xff0c;网络可以…

深入了解pnpm:一种高效的包管理工具

✨专栏介绍 在当今数字化时代&#xff0c;Web应用程序已经成为了人们生活和工作中不可或缺的一部分。而要构建出令人印象深刻且功能强大的Web应用程序&#xff0c;就需要掌握一系列前端技术。前端技术涵盖了HTML、CSS和JavaScript等核心技术&#xff0c;以及各种框架、库和工具…

Golang 交叉编译之一文详解

博客原文 文章目录 Golang 中的交叉编译不同操作系统间的编译Linux 下编译windowsmacos windows 下编译Linuxmacos macos 下编译Linuxwindows 不同架构下的编译amd64x86 参考 Golang 中的交叉编译 在 Golang 中&#xff0c;交叉编译指的是在同一台机器上生成针对不同操作系统或…

关于最近VSCode的Python代码格式化失效问题的解决办法

隔了一段时间再次打开VSCode写Python脚本&#xff0c;Python扩展弹出一条警告 查看日志输出发现Python的代码格式化设置发生了变化 简单来说就是Python扩展已经将原有的默认代码格式化工具 "ms-python.python" 弃用&#xff0c;格式化功能已移交到单独的格式化工具…

CUDA安装一直卡在检查系统兼容性,或花费极长的时间检查兼容性,但最后显示NVIDIA安装程序失败

CUDA安装一直卡在检查系统兼容性&#xff0c;或花费极长的时间检查兼容性&#xff0c;但最后显示NVIDIA安装程序失败 ⚙️1.软件环境⚙️&#x1f50d;2.问题描述&#x1f50d;&#x1f421;3.解决方法&#x1f421;&#x1f914;4.结果预览&#x1f914; ⚙️1.软件环境⚙️ W…

【算法与数据结构】70、LeetCode爬楼梯

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;因为每次可以爬1阶或者2阶台阶&#xff0c;若想到达第i阶&#xff0c;则有两种情况&#xff1a;在第i-…