QTablewidget 简单例子
【1】QTableWidget简介
QTableWidget是QT对话框设计中常用的显示数据表格的控件。
学习QTableWidget就要首先看看QTableView控件(控件也是有”家世“的!就像研究人一样一样的),因为QTableWidget继承于类QTableView。
两者主要区别是QTableView可以使用自定义的数据模型来显示内容(也就意味着使用时先要通过setModel来绑定数据源),而QTableWidget则只能使用标准的数据模型。
QTableWidget单元格数据是QTableWidgetItem对象来实现的(即就是不需要数据源,单元格内的信息需要逐个填充即可)。
这主要由于QTableView类中有setModel成员函数,而到了QTableWidget类中,该成员函数变成了私有。
使用QTableWidget就离不开QTableWidgetItem。QTableWidgetItem用来表示表格中的其中一个单元格,整个表格都需要用逐个单元格对象QTableWidgetItem构建起来。
【2】QTableWidget控件属性
(1)禁止编辑表格
在默认情况下,表格里的字符是可以更改的。
比如双击一个单元格,就可以修改原来的内容,如果想禁止用户的这种操作,让这个表格对用户只读,可以这样:
1 ui.qtablewidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
(2)设置表格为选择整行
1 /*设置表格为整行选中*/
2 ui.qtablewidget->setSelectionBehavior(QAbstractItemView::SelectRows);
(3)设置单个选中和多个选中
单个选中意味着每次只可以选中一个单元格,多个就是相当于可以选择”一片“那种模式。
1 /*设置允许多个选中*/
2 ui.qtablewidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
(4)表格表头的显示与隐藏
对于水平或垂直方向的表头,如果不想显示可以用以下方式进行(隐藏/显示)设置:
1 ui.qtablewidget->verticalHeader()->setVisible(true);
2 ui.qtablewidget->horizontalHeader()->setVisible(false);
(5)设置具体单元格中字体的对齐方式
1 ui.qtablewidget->item(0, 0)->setTextAlignment(Qt::AlignHCenter);
(6)设置具体单元格中字体格式
1 ui.qtablewidget->item(1, 0)->setBackgroundColor(QColor(0,60,10));
2 ui.qtablewidget->item(1, 0)->setTextColor(QColor(200,111,100));
3 ui.qtablewidget->item(1, 0)->setFont(QFont("Helvetica"));
(7)设置具体单元格的值
1 ui.qtablewidget->setItem(1, 0, new QTableWidgetItem(str));
(8)把QTableWidgetItem对象内容转换为QString
1 QString str =ui.qtablewidget->item(0, 0)->data(Qt::DisplayRole).toString();
(9)具体单元格中添加控件
1 QComboBox *comBox = new QComboBox();
2 comBox->addItem("F");
3 comBox->addItem("M");
4 ui.qtablewidget->setCellWidget(0,3,comBox);
(11)合并单元格
1 //合并单元格的效果
2 ui.qtablewidget->setSpan(2, 2, 3, 2);
3 //第一个参数:要改变的单元格行数
4 //第二个参数:要改变的单元格列数
5 //第三个参数:需要合并的行数
6 //第四个参数:需要合并的列数
(12)具体单元格中插入图片
ui.qtablewidget->setItem(3, 2, new QTableWidgetItem(QIcon("images/music.png"), "Music"));
(13)设置显示网格
ui.qtablewidget->setShowGrid(true);//显示表格线
(14)设置滚动条
ui.qtablewidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//去掉水平滚动条
(15)设置列标签

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

(16)设置行和列的大小设为与内容相匹配
1 ui.qtablewidget->resizeColumnsToContents();
2 ui.qtablewidget->resizeRowsToContents();
(17)设置字体
ui.qtablewidget->setFont(font); //设置字体
(18)获取某一单元格的内容
1 QString strText = ui.qtablewidget->item(0, 0)->text();
Good Good Study, Day Day Up.
顺序 选择 循环 坚持
QTablewidget 简单例子的更多相关文章
- Hibernate4.2.4入门(一)——环境搭建和简单例子
一.前言 发下牢骚,这段时间要做项目,又要学框架,搞得都没时间写笔记,但是觉得这知识学过还是要记录下.进入主题了 1.1.Hibernate简介 什么是Hibernate?Hibernate有什么用? ...
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答
一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...
- spring mvc(注解)上传文件的简单例子
spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...
- ko 简单例子
Knockout是在下面三个核心功能是建立起来的: 监控属性(Observables)和依赖跟踪(Dependency tracking) 声明式绑定(Declarative bindings) 模板 ...
- mysql定时任务简单例子
mysql定时任务简单例子 ? 1 2 3 4 5 6 7 8 9 如果要每30秒执行以下语句: [sql] update userinfo set endtime = now() WHE ...
- java socket编程开发简单例子 与 nio非阻塞通道
基本socket编程 1.以下只是简单例子,没有用多线程处理,只能一发一收(由于scan.nextLine()线程会进入等待状态),使用时可以根据具体项目功能进行优化处理 2.以下代码使用了1.8新特 ...
- 一个简单例子:贫血模型or领域模型
转:一个简单例子:贫血模型or领域模型 贫血模型 我们首先用贫血模型来实现.所谓贫血模型就是模型对象之间存在完整的关联(可能存在多余的关联),但是对象除了get和set方外外几乎就没有其它的方法,整个 ...
- [转] 3个学习Socket编程的简单例子:TCP Server/Client, Select
以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序.如果你能完全理解这3个例子,估计 ...
- jsonp的简单例子
jsonp的简单例子 index.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8&q ...
随机推荐
- Qt 学习之路 2(57):可视化显示数据库数据
Qt 学习之路 2(57):可视化显示数据库数据(skip) 豆子 2013年6月26日 Qt 学习之路 2 26条评论 前面我们用了两个章节介绍了 Qt 提供的两种操作数据库的方法.显然,使用QSq ...
- flask简单了解
Flask简介: Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务,在介绍Flask之前首先来聊下它和Django的联系以及区别,djang ...
- C++_类和动态内存分配1—动态内存和类
静态类成员 num_strings成员声明为静态存储类.静态类成员有一个特点:无论创建了多少对象,程序都只创建一个静态类变量副本.也就是说,类的所有对象共享一个静态成员.num_strings成员可以 ...
- BZOJ - 2648 KD树 最近点查询
省赛后躺尸几天又回来更新了,内容是说好的KD树.. 具体操作从代码中感受一下 感觉已经把KD树尽量封装好了(虽然全局的D看着极不顺眼) 需要注意的是估值函数的判断条件 #include<bits ...
- C++ GUI Qt4编程(13)-6.2preferencedialog
1. 主要介绍了QStackedLayout.QListWidget.QDialogButtonBox的简单用法.2. QStackedLayout: 要使某个特定的子窗口部件可见,可以用setC ...
- datagrip 导出数据库备份到本地
1.建立自己的数据库 2.如图 3,结果
- IDEA查看第三方jar包的源代码时出现Decompiled.class file, bytecode version:52.0 (Java 8)的解决方案
IDEA中使用Ctrl+左键查看第三方jar包的源代码时,出现Decompiled.class file, bytecode version:52.0 (Java 8),说明IDEA没找到该类的.ja ...
- TOJ 2857 Stockbroker Grapevine
描述 Stockbrokers are known to overreact to rumours. You have been contracted to develop a method of s ...
- ElasticSearch mapping中字段属性总结
- Python 进阶
高阶函数 定义 函数接受的参数是一个函数 函数的返回值为一个函数 满足以上2点中其中一个就是高阶函数 函数嵌套 定义 函数中def定义一个函数 嵌套会存在闭包, 其他情况不会有闭包(闭包闭的是变量) ...