QT学习笔记9:QTableWidget的用法总结
最近用QT中表格用的比较多,使用的是QTableWidget这个控件,总结一下QTableWidget的一些相关函数。
1.将表格变为禁止编辑:
- tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
- (参数含义:QAbstractItemView.NoEditTriggers--不能对表格内容进行修改
- QAbstractItemView.CurrentChanged--任何时候都能对单元格修改
- QAbstractItemView.DoubleClicked--双击单元格
- QAbstractItemView.SelectedClicked--单击已选中的内容
- QAbstractItemView.EditKeyPressed--
- QAbstractItemView.AnyKeyPressed--按下任意键就能修改
- QAbstractItemView.AllEditTriggers--以上条件全包括)
2.设置表格为整行选择
- tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); //整行选中的方式
- (参数含义:AbstractItemView.SelectItems--选中单个单元格
- QAbstractItemView.SelectRows--选中一行
- QAbstractItemView.SelectColumns--选中一列)
3.单个选中和多个选中的设置
- tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection); //设置为可以选中多个目标
- (参数含义:QAbstractItemView.NoSelection--不能选择
- QAbstractItemView.SingleSelection--选中单个目标
- QAbstractItemView.MultiSelection--选中多个目标
- QAbstractItemView.ExtendedSelection/QAbstractItemView.ContiguousSelection 的区别不明显,主要功能是正常情况下是单选,但按下Ctrl或Shift键后,可以多选)
4.表格表头的显示与隐藏
注意:需要 #include <QHeaderView>
对于水平或垂直方法的表头,可以用以下方式进行 隐藏/显示 的设置:
- tableWidget->verticalHeader()->setVisible(false); //隐藏列表头
- tableWidget->horizontalHeader()->setVisible(false); //隐藏行表头
5.对表头文字的字体、颜色进行设置
注意:需要 #include <QHeaderView>
- QTableWidgetItem *columnHeaderItem0 = tableWidget->horizontalHeaderItem(); //获得水平方向表头的Item对象
- columnHeaderItem0->setFont(QFont("Helvetica")); //设置字体
- columnHeaderItem0->setBackgroundColor(QColor(,,)); //设置单元格背景颜色
- columnHeaderItem0->setTextColor(QColor(,,)); //设置文字颜色
6.在单元格里加入控件
- QComboBox *comBox = new QComboBox();
- comBox->addItem("Y");
- comBox->addItem("N");
- tableWidget->setCellWidget(,,comBox);
7.单元格中添加图片
- tableWidget->setItem(row, , new QTableWidgetItem(QIcon(":/new/images/kingdemo.ico"),tr("")));
8.设置单元格字体颜色、背景颜色和字体字符
- QTableWidgetItem *item = new QTableWidgetItem("Apple");
- item->setBackgroundColor(QColor(,,));
- item->setTextColor(QColor(,,));
- item->setFont(QFont("Helvetica"));
- tableWidget->setItem(,,item);
- //另:如果需要对所有的单元格都使用这种字体,则可以使用 tableWidget->setFont(QFont("Helvetica"));
9.设置单元格内文字的对齐方式
- // 水平对齐方式有:
- Constant Value Description
- Qt.AlignLeft 0x0001 Aligns with the left edge.
- Qt.AlignRight 0x0002 Aligns with the right edge.
- Qt.AlignHCenter 0x0004 Centers horizontally in the available space.
- Qt.AlignJustify 0x0008 Justifies the text in the available space.
- //垂直对齐方式:
- Constant Value Description
- Qt.AlignTop 0x0020 Aligns with the top.
- Qt.AlignBottom 0x0040 Aligns with the bottom.
- Qt.AlignVCenter 0x0080 Centers vertically in the available space.
- //如果两种都要设置,只要用 Qt.AlignHCenter | Qt.AlignVCenter 的方式即可
10.合并单元格
- tableWidget->setSpan(, , , ) //其参数为: 要改变单元格的1行数、2列数,要合并的3行数、4列数
11.设置单元格的大小
- //首先,可以指定某个行或者列的大小
- tableWidget->setColumnWidth(,);
- tableWidget->setRowHeight(,);
- //还可以将行和列的大小设为与内容相匹配
- tableWidget->resizeColumnsToContents();
- tableWidget->resizeRowsToContents();
12.获得单击单元格的内容
通过实现 itemClicked (QTableWidgetItem *) 信号的槽函数,就可以获得鼠标单击到的单元格指针,进而获得其中的文字信息
- connect(tableWidget,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this,SLOT(getItem(QTreeWidgetItem*,int)));
- //将itemClicked信号与函数getItem绑定
13.QTableWidget要调整表格行宽主要涉及以下函数
- tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch);//使列完全填充并平分
- tableWidget->verticalHeader()->setResizeMode(QHeaderView::Stretch);//行自适应宽度
- tableWidget->resizeColumnsToContents(); //根据内容调整列宽
- tableWidget->resizeColumnToContents(int col);//根据内容自动调整给定列宽
- tableWidget->horizontalHeader()->setResizeMode//把给定列设置为给定模式
- //主要模式有Stretch和Fixed
14.添加表头内容
- //方法一:
- QStringList header;
- header<<""<<tr("")<<tr("")<<tr("")<<tr("4)<<tr("");
- //方法二:
- tableWidget->setHorizontalHeaderLabels(QStringList() << tr("")<<tr("")<<tr("")<<tr("4)<<tr(""));
15.清除
- tableWidget->clear();//清除所有可见数据(包括表头),行还在
- tableWidget->clearContents();//只清除表中数据,不清除表头内容
- tableWidget->setRowCount();//连行也清除掉
16.排序
- tableWidget->sortByColumn(, Qt::AscendingOrder);//顾名思义,该函数意思是将某列按升序/降序的方式排列
17.一些零碎的知识点代码
- int row = tableWidget->rowCount();//获取表格中当前总行数
- tableWidget->setRowCount(row+);//添加一行
- tableWidget->removeRow(row);//清除已有的行列
- Int row1 = tableWidget->currentItem()->row();//当前选中行
- bool focus = tableWidget->isItemSelected(tableWidget->currentItem());//判断是否选中一行
- QString proName = tableWidget->item(row, col)->text();//获取某一格内容
- setShowGrid(true);//显示表格线
- verticalHeader()->setVisible(false);//隐藏左边垂直
- QHeaderView *headerView = horizontalHeader();
- headerView->setMovable(false);//去除表头的移动
- headerView->resizeSection(,);//设置第一列宽
- headerView->resizeSection(,);//设置第二列宽
- headerView->setResizeMode(QHeaderView::Fixed);//列表不能移动
- headerView->setClickable(false);//不响应鼠标单击
- setEditTriggers(QTableWidget::NoEditTriggers);//不能编辑
- setSelectionBehavior(QTableWidget::SelectRows);//一次选中一行
- setSelectionMode(QAbstractItemView::SingleSelection);//只能单选
- /*QScrollBar *scrollBar = horizontalScrollBar();
- scrollBar->hide();*/
- setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//去掉水平滚动条
- setVerticalScrollMode(QAbstractItemView::ScrollPerItem);//垂直滚动条按项移动
- setAutoScroll(false);//去掉自动滚动
18.使用实例
- ui.Retina_1->setRowCount(); //设置行数为8
- ui.Retina_1->setColumnCount(); //设置列数为6
- ui.Retina_1->clear();
- //自适应宽度
- ui.Retina_1->horizontalHeader()->setStretchLastSection(true);
- ui.Retina_1->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
- //设置默认高度
- ui.Retina_1->verticalHeader()->setDefaultSectionSize();
- //隐藏滚动条
- ui.Retina_1->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
- ui.Retina_1->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
- ui.Retina_1->setEditTriggers(QAbstractItemView::NoEditTriggers);//不可编辑
- ui.Retina_1->setSelectionMode(QAbstractItemView::NoSelection);//不可选择
- ui.Retina_1->verticalHeader()->setVisible(false); //隐藏列表头
- //设置表头
- QStringList header;
- header << "类型" << "厚度" << "体积" << "类型" << "厚度" << "体积";
- ui.Retina_1->setHorizontalHeaderLabels(header);
- ui.Retina_1->setSpan(, , , );//将无用单元格合并
- //设置每一项
- ui.Retina_1->setItem(, , new QTableWidgetItem("F"));//
- ui.Retina_1->setItem(, , new QTableWidgetItem("PF"));//
- ui.Retina_1->setItem(, , new QTableWidgetItem("P_S_H")); //
- ui.Retina_1->setItem(, , new QTableWidgetItem("P_I_H"));//
- ui.Retina_1->setItem(, , new QTableWidgetItem("P_T"));//
- ui.Retina_1->setItem(, , new QTableWidgetItem("P_S"));//
- ui.Retina_1->setItem(, , new QTableWidgetItem("P_N"));//
- ui.Retina_1->setItem(, , new QTableWidgetItem("P_I"));//
- ui.Retina_1->setItem(, , new QTableWidgetItem("PF")); //
- ui.Retina_1->setItem(, , new QTableWidgetItem("P_S_H"));//
- ui.Retina_1->setItem(, , new QTableWidgetItem("P_I_H"));//
- ui.Retina_1->setItem(, , new QTableWidgetItem("P_T"));//
- ui.Retina_1->setItem(, , new QTableWidgetItem("P_S"));//
- ui.Retina_1->setItem(, , new QTableWidgetItem("P_N"));//
- ui.Retina_1->setItem(, , new QTableWidgetItem("P_I"));////每一项的厚度值
- if (true)
- {
- ui.Retina_1->setItem(, , new QTableWidgetItem(QString::number(g_Scan)));//
- ui.Retina_1->setItem(, , new QTableWidgetItem(QString::number(g_Scan)));//
- ui.Retina_1->setItem(, , new QTableWidgetItem(QString::number(g_Scan)));//
- ui.Retina_1->setItem(, , new QTableWidgetItem(QString::number(g_Scan)));//
- ui.Retina_1->setItem(, , new QTableWidgetItem(QString::number(g_Scan)));//
- ui.Retina_1->setItem(, , new QTableWidgetItem(QString::number(g_Scan)));//
- ui.Retina_1->setItem(, , new QTableWidgetItem(QString::number(g_Scan)));//
- ui.Retina_1->setItem(, , new QTableWidgetItem(QString::number(g_Scan)));//
- }
QT学习笔记9:QTableWidget的用法总结的更多相关文章
- qt学习笔记(五) QGraphicsPixmapItem与QGraphicsScene的编程实例 图标拖动渐变效果
应大家的要求,还是把完整的project文件贴出来,大家省点事:http://www.kuaipan.cn/file/id_48923272389086450.htm 先看看执行效果,我用的群创7寸屏 ...
- 触发器学习笔记(:new,:old用法)
触发器学习笔记(:new,:old用法) 触发器是数据库发生某个操作时自动运行的一类的程序 用于保持数据的完整性或记录数据库操作信息方面 触发器不能够被直接调用,只能够 ...
- Qt学习笔记-Widget布局管理
Qt学习笔记4-Widget布局管理 以<C++ GUI Programming with Qt 4, Second Edition>为参考 实例:查找对话框 包含三个文件,f ...
- QT学习笔记(一)——Helloworld
QT学习笔记(一)--Helloworld 一.调试的基本方法: Log调试法 --在代码中加入一定的打印语句 --打印程序状态和关键变量的值 断点调试法: --在开发环境中的对应代码行加上断点 -- ...
- qt学习笔记(七)之数据库简介(所有支持数据库类型的列表)
笔者最近用Qt写公司的考勤机.本来要求是要基于frameBuffer下用自己开发的easyGUI来进行上层应用开发,但是考虑到easyGUI提供的接口不是很多,就考虑用Qt来开发,顺带练练手. 废话不 ...
- Qt学习笔记(2)-利用StackWidget实现选项卡式页面
学习笔记第二篇,利用Qt实现选项卡式的页面,效果如图1.1-图1.3所示.程序实现的功能是通过点击状态栏实现不同页面的切换,实际上Qt中自带有Tab选项卡式的控件,本文利用StackWidge实现类似 ...
- JAVA学习笔记 (okHttp3的用法)
最近的项目中有个接口是返回文件流数据,根据我们这边一个验签的插件,我发现里面有okHttpClient提供了Call.Factory,所以就学习了下okHttp3的用法. 1.概述 okhttp是一个 ...
- Qt学习笔记(1) hello world
Qt的简介: Qt是一个跨平台的C++ GUI库实现,原本只是以为它只提供一些图形接口,看来我还是低估了它,采用文档Qt学习之路2开始学习,不知道这个文档是不是有点老了,管他呢,先了解下. 搭建环境: ...
- 【Qt学习笔记】Qt+VS2010的配置
http://blog.csdn.net/jocyln9026/article/details/8575218 关于Qt Qt是1991年由Trolltech公司开发的一个跨平台的C++图形用户界面应 ...
随机推荐
- [Leetcode]找到出现不同次数的数字(通用解法)
今天在leetcode上遇到了 137. Single Number II 这道题: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次.找出那个只出现了一次的元素.(Give ...
- Hadoop生态圈-Flume的组件之自定义拦截器(interceptor)
Hadoop生态圈-Flume的组件之自定义拦截器(interceptor) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客只是举例了一个自定义拦截器的方法,测试字节传输速 ...
- spectrogram函数做短时傅里叶分析
整理自:http://blog.sina.com.cn/s/blog_6163bdeb0102dwfw.html 今天偶人发现原来matlab自带了短时傅里叶变换的分析函数,老版本的matlab是sp ...
- html5 canvas旋转+缩放
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Django进阶之session
基于cookie做用户验证时:敏感信息不适合放在cookie中 session依赖cookie session原理 cookie是保存在用户浏览器端的键值对 session是保存在服务器端的键值对 s ...
- 20165230 ch02 课上测试
题目一 1.参考附图代码,编写一个程序 "week0201学号.c",判断一下你的电脑是大端还是小端. 2.提交运行结果"学号XXXX的笔记本电脑是X端"的运行 ...
- imperva代理拦截
<external-traffic-monitoring-in-kern>true</external-traffic-monitoring-in-kern> 添加这段就可以开 ...
- 破解验证码模拟登陆cnblogs
from selenium import webdriver from selenium.webdriver import ActionChains from PIL import Image imp ...
- 使用管道和cronolog切割日志
安装cronolog git clone https://github.com/fordmason/cronolog ./configure make && make install ...
- 【前端node开发】你需要的Express开发教程
1.极简Node教程-七天从小白变大神(一:你需要Express) https://www.jianshu.com/p/b4701a6efc50