上一篇文章介绍了几个常用的界面控件模块,如LineEdit等,本文介绍另一类界面窗口必不可少的窗体—表格窗体。Qt一共提供了两大类表格窗体:基于Model的表格和基于条目的表格窗体。基于条目的表格是基于Model表格基础上开出来的。本文主要介绍第二种表格开发:

一共三种条目化表格,比较常用的是Table Widget,也就是QTableWidget。QTableWidget需要基于表格化条目QTableWidgetItem来构造每一个栅格的内容,修改和定位也需要使用QTableWidgetItem。 如果您需要使用自己的特殊数据模型,如集成SQL数据结构快速构造表格,就需要使用第一种表格类型,即QTableView。

和其他窗体文件一下,可以通过QTableWidget的构造函数通过代码手动构造出一个表格放置在主界面之中。如下构造一个12行3列的表格窗体。
tableWidget = new QTableWidget(12, 3, this)

类似的,此处也使用ui编辑器创建表格窗体,从左侧拖入一个表格窗体进入主界面:

手动拖入的表格窗体没有任何表头和单元格信息,是一个空表格。

进入CPP的构造函数之中,为表格窗体设置一些属性:

    //为表格设置一些属性ui->tableWidget->setRowCount(3);     //设置表格行数ui->tableWidget->setColumnCount(2);  //设置表格列数

运行代码,构造一个3X2表格:

表格没有表头,不好区别,为表格增加表头:

QStringList header;
header<<"Name"<<"Age";
ui->tableWidget->setHorizontalHeaderLabels(header);  //添加表头信息

效果:

下面可以为表格添加一些内容,前面介绍过如果构造表格内容,需要使用QTableWidgetItem。因此需要先构造一个QTableWidgetItem对象,并设置信息,再将item对象放入Table之中:

 QTableWidgetItem *item;               //建立item指针item = new QTableWidgetItem("Bob");   //构造item
ui->tableWidget->setItem(0,0,item);   //放入表格之中1行1列单元格,行和列从0开始计数

效果:

发现字体没有居中,也需要使用QTableWidgetItem来修改,

item->setTextAlignment(Qt::AlignCenter);   //单元格上下和左右都居中

在通过类似的方式构造整个表格:

表格内容可以通过双击边界。如果需要通过代码来修改某一单元格的内容,比如需要将“Tom”改成“Tesla”,首选需要建立一个QTableWidgetItem指针来定位到第二行第一列。

 item = ui->tableWidget->item(1,0);   //定位到需要修改的单元格

然后修改该单元格的内容:

item->setText("Tesla");              //修改单元格的内容

运行代码:

如果左右拉动表格,单元格并未布满整个表格,使用如下代码进行修饰:

ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); //表格均匀布满水平内容

效果:

本文使用到的对表格修改的代码如下:

//为表格设置一些属性ui->tableWidget->setRowCount(3);     //设置表格行数ui->tableWidget->setColumnCount(2);  //设置表格列数QStringList header;header<<"Name"<<"Age";ui->tableWidget->setHorizontalHeaderLabels(header);  //添加表头信息QTableWidgetItem *item;                    //建立item指针item = new QTableWidgetItem("Bob");        //构造itemitem->setTextAlignment(Qt::AlignCenter);   //单元格上下和左右都居中ui->tableWidget->setItem(0,0,item);        //放入表格之中1行1列单元格,行和列从0开始计数item = new QTableWidgetItem("25");        //构造itemitem->setTextAlignment(Qt::AlignCenter);   //单元格上下和左右都居中ui->tableWidget->setItem(0,1,item);        //放入表格之中1行2列单元格,行和列从0开始计数item = new QTableWidgetItem("Tom");        //构造itemitem->setTextAlignment(Qt::AlignCenter);   //单元格上下和左右都居中ui->tableWidget->setItem(1,0,item);item = new QTableWidgetItem("18");        //构造itemitem->setTextAlignment(Qt::AlignCenter);   //单元格上下和左右都居中ui->tableWidget->setItem(1,1,item);item = new QTableWidgetItem("Jim");        //构造itemitem->setTextAlignment(Qt::AlignCenter);   //单元格上下和左右都居中ui->tableWidget->setItem(2,0,item);item = new QTableWidgetItem("55");        //构造itemitem->setTextAlignment(Qt::AlignCenter);   //单元格上下和左右都居中ui->tableWidget->setItem(2,1,item);item = ui->tableWidget->item(1,0);   //定位到需要修改的单元格item->setText("Tesla");              //修改单元格的内容ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); //表格均匀布满水平内容

欢迎同好沟通交流,批评指正,欢迎关注我的公号:不如起而行之

Qt系列文章之(十三)表格窗体相关推荐

  1. qt系列文章之激光雷达通信

    qt系列文章之激光雷达通信 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 qt通信学习入门之激光雷达通信 文章目录 qt系列文章之激光雷达通信 前言 0.效果 一.通 ...

  2. 强化学习系列文章(二十三):AirSim Python API图像与图像处理

    强化学习系列文章(二十三):AirSim Python API图像与图像处理 参考网址:https://microsoft.github.io/AirSim/image_apis/#segmentat ...

  3. Qt系列文章001-Qt下载安装

    1 Qt下载 这边只介绍具体的下载地址,本文也是以Qt5.x系列为主,其他版本不涉及,因为Qt目前的大版本是5.x系列,最新版本最近刚更新到5.15.Qt6 于2020年年底发布,预览版已经出了,我尝 ...

  4. Qt系列文章之二十五(使用QAudiolnput获取音频输入)

    文章目录 前言 效果图 QAudioInput获取音频输入功能概述 程序主窗口定义与初始化 音频输入设备支持的格式 开始音频输入 流设备MineDisplayDevice的功能实现 源码获取 前言   ...

  5. Qt系列文章010-Qt容器类介绍

    1 前言    前面已经详细阐述了Qt 中QtGlobal 包含的常用数据类型和方法还有一些宏定义,因为篇幅的问题,所以做了上下两章来讲.方便各位消化和耐看!那么今天这章主要就是讲解Qt 独有的迭代器 ...

  6. 组合导航系列文章(十二):滤波器基本原理

    我觉得不错的地方 3. 滤波器估计原理 组合导航中,先验是imu解算的值,观测是gps等传感器给出的值,融合的目的是找到概率最大的那个值.上面介绍的三种方法都是对先验和观测的融合,由于极大似然要求先验 ...

  7. 中点和中值滤波的区别_组合导航系列文章(十二):滤波器基本原理

    <组合导航系列文章>是<从零开始做自动驾驶定位>系列的第二阶段,从本阶段开始,文章在<泡泡机器人>公众号上首发,知乎用来备份和以后可能出现的必要更正. 泡泡机器人文 ...

  8. 《Qt 数据库详解》博客系列文章

    本文章原创于www.yafeilinux.com 转载请注明出处. 由于该系列文章图床都挂了,特下载原文博客的word版. 详细博客请点附件下载. 21-Qt数据库(一)简介 22-Qt数据库(二)添 ...

  9. 如何使用graphpad做柱形图_系列文章 如何使用PaddleDetection做一个完整项目(三)...

    系列文章 如何使用PaddleDetection做一个完整项目(三) 该文章是PaddleDetection的完结篇,请参考之前两篇文章 https://zhuanlan.zhihu.com/p/10 ...

  10. 优化网站设计系列文章总结和导读

    概述 其实想写这方面的文章由来已久,这个系列文章的想法是参照雅虎团队提供的35条性能优化的最佳实践(其实最早的时候是14条),再结合我自己多年的实际工作经验,结合具体的开发平台(ASP.NET),为读 ...

最新文章

  1. **PHP SimpleXML 使用详细例子
  2. can总线rollingcounter_一文看懂CAN总线
  3. 叮咚,系统检测到 npm 有更新,原理揭秘!
  4. Mysql安装及自动化部署脚本方案
  5. C语言项目:灰度处理技术
  6. 世上最伟大的十个公式,质能方程排名第五
  7. android studio 多个项目管理,Android Studio之同一应用创建多个Activity(一)
  8. 微课|中学生可以这样学Python(1.3节):Python代码编写规范
  9. 人工智能之语音识别技术【科普】
  10. ESX下修改时间和时区
  11. 国家出手,终于不用再担心网上「​裸奔」​了!
  12. 人工智能机器学习Java也可以
  13. 通达OA2016之进销存管理,为企业开启"精准营收"新模式
  14. windows下sourceTree解决url无效问题
  15. Android ,显示WiFi密码
  16. 哈密顿圈 MATLAB程序,matlab求最佳哈密顿圈遇到错误
  17. 阿里云 Java发布SpringBoot项目,使用邮件服务发送失败原因整理
  18. 设计html网页时需要遵循的语言规范,CSS设计网页时的一些常用规范
  19. 2021-2027全球与中国机器人精密减速器市场现状及未来发展趋势
  20. python手写画直方图

热门文章

  1. 如何提高网页的加载速度 ——优化网页图片加载
  2. 游戏是怎么赚钱的 - 进阶篇
  3. 数据分析~matlab plot 坐标、字体、子图
  4. vt功能对计算机有影响吗,win7怎么开启vt模拟器?电脑开vt有什么坏处?
  5. 带有资源混淆的打补丁过程
  6. java的datasource_JAVA创建DataSource
  7. linux 下安装mantis
  8. 大秦帝国和芈月传对比
  9. 中国人应该知道的知识
  10. 2021年茶艺师(中级)考试及茶艺师(中级)考试题