【1】QTableWidget简介

QTableWidget是QT对话框设计中常用的显示数据表格的控件。

学习QTableWidget就要首先看看QTableView控件(控件也是有”家世“的!就像研究人一样一样的),因为QTableWidget继承于类QTableView。

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

QTableWidget单元格数据是QTableWidgetItem对象来实现的(即就是不需要数据源,单元格内的信息需要逐个填充即可)。

这主要由于QTableView类中有setModel成员函数,而到了QTableWidget类中,该成员函数变成了私有。

使用QTableWidget就离不开QTableWidgetItem。QTableWidgetItem用来表示表格中的其中一个单元格,整个表格都需要用逐个单元格对象QTableWidgetItem构建起来。

【2】QTableWidget控件属性

(1)禁止编辑表格

在默认情况下,表格里的字符是可以更改的。

比如双击一个单元格,就可以修改原来的内容,如果想禁止用户的这种操作,让这个表格对用户只读,可以这样:

  1. 1 ui.qtablewidget->setEditTriggers(QAbstractItemView::NoEditTriggers);

(2)设置表格为选择整行

  1. 1 /*设置表格为整行选中*/
  2. 2 ui.qtablewidget->setSelectionBehavior(QAbstractItemView::SelectRows);

(3)设置单个选中和多个选中

单个选中意味着每次只可以选中一个单元格,多个就是相当于可以选择”一片“那种模式。

  1. 1 /*设置允许多个选中*/
  2. 2 ui.qtablewidget->setSelectionMode(QAbstractItemView::ExtendedSelection);

(4)表格表头的显示与隐藏

对于水平或垂直方向的表头,如果不想显示可以用以下方式进行(隐藏/显示)设置:

  1. 1 ui.qtablewidget->verticalHeader()->setVisible(true);
  2. 2 ui.qtablewidget->horizontalHeader()->setVisible(false);

(5)设置具体单元格中字体的对齐方式

  1. 1 ui.qtablewidget->item(0, 0)->setTextAlignment(Qt::AlignHCenter);

(6)设置具体单元格中字体格式

  1. 1 ui.qtablewidget->item(1, 0)->setBackgroundColor(QColor(0,60,10));
  2. 2 ui.qtablewidget->item(1, 0)->setTextColor(QColor(200,111,100));
  3. 3 ui.qtablewidget->item(1, 0)->setFont(QFont("Helvetica"));

(7)设置具体单元格的值

  1. 1 ui.qtablewidget->setItem(1, 0, new QTableWidgetItem(str));

(8)把QTableWidgetItem对象内容转换为QString

  1. 1 QString str =ui.qtablewidget->item(0, 0)->data(Qt::DisplayRole).toString();

(9)具体单元格中添加控件

  1. 1 QComboBox *comBox = new QComboBox();
  2. 2 comBox->addItem("F");
  3. 3 comBox->addItem("M");
  4. 4 ui.qtablewidget->setCellWidget(0,3,comBox);

(11)合并单元格

  1. 1 //合并单元格的效果
  2. 2 ui.qtablewidget->setSpan(2, 2, 3, 2);
  3. 3 //第一个参数:要改变的单元格行数
  4. 4 //第二个参数:要改变的单元格列数
  5. 5 //第三个参数:需要合并的行数
  6. 6 //第四个参数:需要合并的列数

(12)具体单元格中插入图片

  1. ui.qtablewidget->setItem(3, 2, new QTableWidgetItem(QIcon("images/music.png"), "Music"));

(13)设置显示网格

  1. ui.qtablewidget->setShowGrid(true);//显示表格线

(14)设置滚动条

  1. ui.qtablewidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//去掉水平滚动条

(15)设置列标签

  1. 1 //初始化界面
  2. 2 QStringList HStrList;
  3. 3 HStrList.push_back(QString("name"));
  4. 4 HStrList.push_back(QString("id"));
  5. 5 HStrList.push_back(QString("age"));
  6. 6 HStrList.push_back(QString("sex"));
  7. 7 HStrList.push_back(QString("department"));
  8. 8
  9. 9
  10. 10 //设置行列数(只有列存在的前提下,才可以设置列标签)
  11. 11 int HlableCnt = HStrList.count();
  12. 12 ui.qtablewidget->setRowCount(10);
  13. 13 ui.qtablewidget->setColumnCount(HlableCnt);
  14. 14
  15. 15 //设置列标签
  16. 16 ui.qtablewidget->setHorizontalHeaderLabels(HStrList);

(16)设置行和列的大小设为与内容相匹配

  1. 1 ui.qtablewidget->resizeColumnsToContents();
  2. 2 ui.qtablewidget->resizeRowsToContents();

(17)设置字体

  1. ui.qtablewidget->setFont(font); //设置字体

(18)获取某一单元格的内容

  1. 1 QString strText = ui.qtablewidget->item(0, 0)->text();

Good Good Study, Day Day Up.

顺序  选择  循环  坚持

QTablewidget 简单例子的更多相关文章

  1. Hibernate4.2.4入门(一)——环境搭建和简单例子

    一.前言 发下牢骚,这段时间要做项目,又要学框架,搞得都没时间写笔记,但是觉得这知识学过还是要记录下.进入主题了 1.1.Hibernate简介 什么是Hibernate?Hibernate有什么用? ...

  2. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答

    一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...

  3. spring mvc(注解)上传文件的简单例子

    spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...

  4. ko 简单例子

    Knockout是在下面三个核心功能是建立起来的: 监控属性(Observables)和依赖跟踪(Dependency tracking) 声明式绑定(Declarative bindings) 模板 ...

  5. mysql定时任务简单例子

    mysql定时任务简单例子 ? 1 2 3 4 5 6 7 8 9     如果要每30秒执行以下语句:   [sql] update userinfo set endtime = now() WHE ...

  6. java socket编程开发简单例子 与 nio非阻塞通道

    基本socket编程 1.以下只是简单例子,没有用多线程处理,只能一发一收(由于scan.nextLine()线程会进入等待状态),使用时可以根据具体项目功能进行优化处理 2.以下代码使用了1.8新特 ...

  7. 一个简单例子:贫血模型or领域模型

    转:一个简单例子:贫血模型or领域模型 贫血模型 我们首先用贫血模型来实现.所谓贫血模型就是模型对象之间存在完整的关联(可能存在多余的关联),但是对象除了get和set方外外几乎就没有其它的方法,整个 ...

  8. [转] 3个学习Socket编程的简单例子:TCP Server/Client, Select

    以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序.如果你能完全理解这3个例子,估计 ...

  9. jsonp的简单例子

    jsonp的简单例子 index.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8&q ...

随机推荐

  1. mysql 彻底解决:Incorrect string value: '\xF0\x9F\x98\xAD",...' for column 'commentContent' at row 1

    彻底解决:Incorrect string value: '\xF0\x9F\x98\xAD",...' for column 'commentContent' at row 1 今天在爬取 ...

  2. MVC5 + EF6 入门完整教程1

    https://www.cnblogs.com/miro/p/4030622.html 第0课 从0开始 ASP.NET MVC开发模式和传统的WebForm开发模式相比,增加了很多"约定& ...

  3. python基础语法之基础语法规则以及设置

    1. 编码格式 在python3以上版本中,py文件默认采用UTF-8格式编码,所有的字符串都是unicode字符串.当然,我们也可以自己为源码文件指定不同的编码,以utf-8为例,相关代码如下所示: ...

  4. SQL批量提交修改业务

    把你需要批量提交修改的东西在内存中修改完毕 然后执行以下代码 SqlConnection conn = new SqlConnection(ConnectionString);SqlDataAdapt ...

  5. [转] Akka实战:构建REST风格的微服务

    [From] http://www.yangbajing.me/2015/11/27/akka%E5%AE%9E%E6%88%98%EF%BC%9A%E6%9E%84%E5%BB%BArest%E9% ...

  6. 破解MyEclipse

  7. mysql 数据存储引擎区别

    一,存储类型 二 , MyISAM默认存储引擎 MyISAM 管理非事务表.是ISAM 的扩展格式.除了提供ISAM里所没有的索引的字段管理等的大量功能.MyISAM 还使用一种表格锁定的机制.来优化 ...

  8. DP Intro - OBST

    http://radford.edu/~nokie/classes/360/dp-opt-bst.html Overview Optimal Binary Search Trees - Problem ...

  9. 最强json解析工具

    [原]http://blog.csdn.net/xiaoguomumu/article/details/75255629 感觉上面的链接所说,需要传一个T进去,也就是先要构造T,感觉麻烦 可以不这样做 ...

  10. Linux利器strace

    strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式 ...