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();
QTableWidget控件总结<一>的更多相关文章
- QTableWidget控件总结
[1]QTableWidget简介 QTableWidget是QT对话框设计中常用的显示数据表格的控件. 学习QTableWidget就要首先看看QTableView控件(控件也是有”家世“的!就像研 ...
- QTableWidget控件总结<二>
QTableWidget是QT程序中常用的显示数据表格的空间,很类似于VC.C#中的DataGrid.说到QTableWidget,就必须讲一下它跟QTabelView的区别了.QTableWidge ...
- [ PyQt入门教程 ] PyQt5中数据表格控件QTableWidget使用方法
如果你想让你开发的PyQt5工具展示的数据显得整齐.美观.好看,显得符合你的气质,可以考虑使用QTableWidget控件.之前一直使用的是textBrowser文本框控件,数据展示还是不太美观.其中 ...
- qt5--表格控件QTableWidget
需要 #include <QTableWidget> #include <QTableWidgetItem> #include "win.h" ...
- Qt在表格中加入控件
任务:使用QTableWidget动态生成表格,在每行的某两列中加入QComboBox下拉框控件和QPushButton按钮控件 有添加,删除,编辑功能,每行的按钮可以浏览文件夹并选择文件 1.新建一 ...
- Qt分页导航控件
最近在使用QTableWidget时,因为结果数量比较多而且又有单元格控件,为了改善效率要做分页处理.在网上找了一番,最后在http://www.cppblog.com/biao/archive/20 ...
- Qt常用控件
Qt常用控件 QWidget与QFrame QWidget所有图形控件的基类 QFrame与QWidget的区别 QFrame是基本控件的基类, QWidget是QFrame的基类. 因此QFrame ...
- QT控件学习
一.QPushButton 1.设置背景色: ui->pushButton->setStyleSheet("background-color: rgb(170, 0, 255)& ...
- 批量操作QT UI中的控件
背景:在一个项目中,可能一个UI中存在大量相同的tablewidget,combobox,label等控件,每种可能有100个,此时想对它们进行同样的操作 方案:(以tablewidget为例,UI中 ...
随机推荐
- Caliburn实现MVVM模式的编程
引言:什么是Caliburn ? 一个夜晚,一处教堂,人们忏悔结束后抬头看到一把宝剑插在一块石头上.石上字述“英格兰人,凡能从石头上拔出剑者,为王者!”,Caliburn就是英格兰人心中的石中剑,这把 ...
- mac 命令行批量删除.svn[转]
mac下.svn是隐藏文件,而且即使我们调成可见的,一个一个删也很麻烦.今天正好同事问起来这个命令,于是想可能有些人也需要,于是还是放到博客里吧 命令比较简单,其实就是一条linux命令,打开终端,首 ...
- ASP.NET-自定义HttpModule与HttpHandler
在之前的ASP.NET是如何在IIS下工作的这篇文章中介绍了ASP.NET与IIS配合工作的机制,在http请求经过一系列处理后,最后到达ASP.NET管道中,这时,就是Http Modules和Ht ...
- 消息队列-Kafka学习
Kafka是一个分布式的消息队列,学习见Apache Kafka文档,中文翻译见Kafka分享,一个简单的入门例子见kafka代码入门实例.本文只针对自己感兴趣的点记录下. 1.架构 Producer ...
- struts2学习笔记之五:表单数据收集的几种方式
方法一:struts2对ModelDriven模式的支持(模型驱动模式) Struts2可以采用类似于Struts1中的ActionForm方式收集数据,这样方式叫ModelDriven模式 Acti ...
- Visual Studio 2012系统环境变量设置(命令行)
方法1.运行脚本vsvars32.bat:D:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\vsvars32.bat ...
- Atitti css transition Animation differ区别
Atitti css transition Animation differ区别 1.1. transition的优点在于简单易用,但是它有几个很大的局限. 1 1.2. js 动态改变 st ...
- GridView和DATAGRID前后台查询用法的比较
Grideview前台: <DIV class="mainDiv" id="GridWidth"> <ASP:GridView id=&quo ...
- iOS---------- @synchronized(self)的用法
1. synchronized 这个主要是考虑多线程的程序,这个指令可以将{ } 内的代码限制在一个线程执行,如果某个线程没有执行完,其他的线程如果需要执行就得等着. Objective-C除了提 ...
- C# 集合类 :(Array、 Arraylist、List、Hashtable、Dictionary、Stack、Queue)
我们用的比较多的非泛型集合类主要有 ArrayList类 和 HashTable类.我们经常用HashTable 来存储将要写入到数据库或者返回的信息,在这之间要不断的进行类型的转化,增加了系统装箱和 ...