Qt 设置QTableView表格列宽自动均分表格
Qt 设置QTableView表格列宽自动均分表格
前言
最近项目需要对数据库里的表进行一个自适应的显示,在显示到QTableView上时,发现表格的宽度会有点不太好看,所以就决定自动的调整表格的宽度。
setSectionResizeMode
ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); // 平分
这里也可以设置表格的宽度自动适应,但是这个比较僵硬,这个不会管表头的内容,只会去适应表格里面的内容,但是当表格里面的内容宽度小于表头的宽度时,就会把表头压缩到看不清楚,诚然你可以设置最小宽度,但是这样总归还是不太合适,设置最小宽度的方法在这里
tableView = createView(mySqlQueryModel, QObject::tr("可颂坊报表系统"));
//tableView->resizeColumnsToContents();
// 设置表格调整模式为适应表格内容
tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
// 设置最小的宽度
tableView->horizontalHeader()->setMinimumSectionSize(100);
通过获取字体占的像素来设置
可以通过计算字体所占的像素来设置对应的宽度,使用的类是QFontMe
QFont font;
// fontFamily 是字体
font.setFamily(fontFamily);
// fontPixel 是大小
font.setPixelSize(fontPixel);
QFontMetrics fontMetrics(font);
result = fontMetrics.boundingRect(text).width();
然后需要根据表格列的内容最大的宽度、平均分表格的宽度和表格表头文字所占的宽度来设置表格的列的宽度
// 表格列的宽度为 max (表格头的文字占的像素, 均分表格的长度, 表格中每一列中的文字最大值)
int tableWidth = ui->tableView->width() - 15;
// 排除第一列的复选框,所以需要减去100,且表格列数需要减一
int columnAverageWidth = (tableWidth - 100) / (m_itemModel->columnCount() - 1);
ui->tableView->setColumnWidth(0, 100);
for (int i = 1; i < m_itemModel->columnCount(); i++) {
// textPixel 为上面的计算字体所占像素的函数
int headerWordWidth = textPixel("Microsoft YaHei",
16,
m_itemModel->headerData(i, Qt::Horizontal)
.toString());
// QVector<int> m_columnTextMaxWidth; 记录了每一列中的文字的最宽所占的像素。
int columnWidth = qMax(m_columnTextMaxWidth.at(i)+10,
qMax(columnAverageWidth, headerWordWidth + 10));
ui->tableView->setColumnWidth(i, columnWidth);
}
这样的话,就可以根据找出最合适的宽度了。
Qt 设置QTableView表格列宽自动均分表格的更多相关文章
- jQuery表格列宽可变,兼容firfox
本demo使用jQuery包,实现表格列宽可拖拽功能,并实现页面reset时的重新布局.使用jQuery,方便函数的调用,给要处理的表格添加id 后,直接调用$("#id").mo ...
- 使用jqueryUI实现自由调整表格列宽
今天项目中需要插入表格,用Excel表格调整列宽时,想怎么拖就怎么拖,于是乎就让插入的表格也这么让人舒服.网上查找许久,没找到好用的方案.最后发现jQuery UI中的resizable()方法可以实 ...
- eas之添加表格列宽自动调整设置
设置表格整体宽度自动调整为所在panel的宽度 KDTable table=new KDTable(); table. setAutoResize (boolean); 注意:该功能在冻结功能启用后, ...
- 设置tablewidget自适应列宽和设置自动等宽
在网上很容易知道自适应列宽,100%不留空显示,这里还是提下: /*设置表格是否充满,即行末不留空*/ ui->tableWidget->horizontalHeader()-> ...
- java表格操作之设置表格列宽
设置所有列的宽度 /** * 设置所有列的列宽 * @param table * @param width */ public void setAllColumnWidth(JTable table, ...
- saiku导出excel单元格格式与中文列宽自动适应
在saiku导出excel后打开发现单元格的整数也显示为小数,并且含有中文的列宽没有自动适应,解决办法如下: 打开ExcelWorksheetBuilder.java文件,找到applyCellFor ...
- Asp.net 设置GridView自适应列宽不变形
动态绑定的GridView由于列数不固定,而列又太多,这样设置GridView固定宽度就不能满足需求了.为此整理了两种方法来达到GridView自适应列宽不变形的效果. //在GridView的行数据 ...
- 转!!Java JTable 根据表格内容 自动调整表格列宽
//根据表格内容 自动调整列宽http://blog.sina.com.cn/s/blog_5e54d6140100s1d3.html
- 原生js实现table表格列宽自由缩放
<!DOCTYPE html> <html> <head> <meta charset="gbk"> <title>ta ...
- 原生js实现 table表格列宽拖拽
查看效果 <!DOCTYPE html> <html> <head> <meta charset="gbk"> <title& ...
随机推荐
- 深入理解 Servlet:从基础概念到高级特性与实战应用
一.Servlet简介与工作原理 Servlet是Java Web开发中的重要组件,它运行在服务器端,用于处理客户端的请求并返回响应.其工作原理涉及多个组件和步骤,从客户端发起请求到服务器端的处理和响 ...
- Qt编写安防视频监控系统32-onvif信息获取
一.前言 上一篇文章写的是onvif设备搜索,搜到这些设备以后,第一件事情就是要对设备信息获取一下,比如获取视频流地址,配置套件信息.码流信息.分辨率大小等,这些信息的获取根据具体的需要去获取,也没有 ...
- 在Deepin系统上配置微软Windows远程桌面服务
. 前言 本文主要讲解如何在deepin系统上安装和配置Xrdp远程桌面. Xrdp是微软的远程桌面协议(Remote Desktop Protocol, RDP)的开源版本.在Linux系统上安装X ...
- 刚学完Vue收集的库或项目分享
最近刚看完一个Vue3的视频教程,还不错,整理最近收集与Vue相关的库或项目. awesome-vue:与 Vue.js 相关的精彩内容精选清单.https://github.com/vuejs/aw ...
- DVWA靶场JavaScript Attacks漏洞low(低),medium(中等),high(高),impossible(不可能的)所有级别通关教程
JavaScript Attacks (前端攻击) JavaScript Attacks(前端攻击)漏洞通常涉及利用Web应用程序中的安全漏洞,特别是在JavaScript代码的使用和实现上,从而对用 ...
- Solution -「JOISC 2017」「LOJ #2392」烟花棒
\(\mathscr{Description}\) Link. 有 \(n\) 个人站在数轴上,第从左往右第 \(i\) 个人的坐标是 \(x_i\),每个人手上有一支烟花棒,每支烟花棒能燃烧 ...
- 第七章 (Nginx+Lua)Web开发实战商品详情页
本章以京东商品详情页为例,京东商品详情页虽然仅是单个页面,但是其数据聚合源是非常多的,除了一些实时性要求比较高的如价格.库存.服务支持等通过AJAX异步加载加载之外,其他的数据都是在后端做数据聚合然后 ...
- w3cschool-spring详解
参考地址 https://www.w3cschool.cn/wkspring/dcu91icn.html Spring 体系结构 2021-11-03 18:18 更新 体系结构 Spring 有可能 ...
- 原生input上传视拼,参数形式 file: (binary)形式的
<input type="file" @change="demo"> if(e.target.files[0]&&e.target. ...
- DeepSeek-R1 技术全景解析:从原理到实践的“炼金术配方” ——附多阶段训练流程图与核心误区澄清
字数:约3200字|预计阅读时间:8分钟 (调试着R1的API接口,看着控制台瀑布般流淌的思维链日志)此刻我仿佛看到AlphaGo的棋谱在代码世界重生--这是属于推理模型的AlphaZero时刻. D ...