前言

最近使用QTableView比较频繁,出现了一些比较奇葩的问题,其中之一就是QTableView在显示来自模型的数据时,经常会显示...省略了内容的后半部分。
如下图:
查看帮助文档可以找到resizexxxxToContents()系列接口:
根据内容自动调整某列的列宽
void QTableView::resizeColumnToContents ( int column ) [slot]
根据内容自动调整所有列的列宽
void QTableView::resizeColumnsToContents () [slot ]
根据内容自动调整某一行的行高
void QTableView::resizeRowToContents ( int row ) [slot]
根据内容自动调整所有行的行高。
void QTableView::resizeRowsToContents () [slot]
楼主之前的项目中也是通过这系列接口实现了显示不全的问题,但是这次同样调用了这些接口却还是解决不了显示不全的问题,于是楼主就开始要吐槽Qt提供的API了,这不是坑广大的Qter们吗,这系列API明显就是告诉开发者是解决表格内容显示不全的问题,但是却不是都能达到效果。

最终解决方法(通过设置表头属性解决)

折腾好久发现确实通过QTableView提供的API解决不了问题,于是就想到通过设置QTableView的表头属性能不能解决,果然最后各种折腾终于可以表格中全部内容了。
先上结果图:
源码示例:
    tableView = createView(mySqlQueryModel, QObject::tr("可颂坊报表系统"));//tableView->resizeColumnsToContents();tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);tableView->verticalHeader()->setSectionResizeMode(QHeaderView::Fixed);tableView->horizontalHeader()->setMinimumSectionSize(100);//tableView->horizontalHeader()->setSectionsMovable(true);

本着爱折腾的精神,楼主又进一步思考了一些问题:是resizexxxxToContents()系列接口和表头的setSectionResizeMode()接口的同事作用还是只有表头的setSectionResizeMode()接口就可以解决显示不全问题?最后发现1.单独调用resizexxxxToContents()系列接口解决不了;2.同时调用resizexxxxToContents()系列接口和表头的setSectionResizeMode()接口解决了显示不全问题;3.单独调用表头的setSectionResizeMode()接口就可以解决显示不全问题。最终,楼主发现 起作用的是表头的setSectionResizeMode()接口!所以当使用QTableView的resizexxxxToContents()系列接口可以解决显示不全的问题的时候就单独使用这系列的接口,行不通的话就使用表头的setSectionResizeMode()接口!



附录:表头(QHeaderView)的setSectionResizeMode()接口枚举参数
    enum ResizeMode{Interactive,Stretch,Fixed,ResizeToContents,Custom = Fixed};

枚举常量

中文描述

英文描述

QHeaderView::Interactive

0

The user can resize the section. The section can also be resized programmatically usingresizeSection(). The section size defaults todefaultSectionSize. (See alsocascadingSectionResizes.)

用户可以重新调整表头的大小,也可以使用resizeSection()重新调整表头的大小。

QHeaderView::Fixed

2

The user cannot resize the section. The section can only be resized programmatically usingresizeSection(). The section size defaults todefaultSectionSize.

用户不可以重新调整表头的大小,只可以使用resizeSection()重新调整表头的大小。

QHeaderView::Stretch

1

QHeaderView will automatically resize the section to fill the available space. The size cannot be changed by the user or programmatically.

表头将会调整单元格到可得的空间。用户或者程序员通过代码都不能改变它的大小。

QHeaderView::ResizeToContents

3

QHeaderView will automatically resize the section to its optimal size based on the contents of the entire column or row. The size cannot be changed by the user or programmatically. (This value was introduced in 4.2)

表头将自动根据整个行或者列的内容去调整表头单元格到最佳的大小。用户或者程序员通过代码都不能改变它的大小。

QTableView根据内容自动调整大小(resizeColumnToContents解决不了的)相关推荐

  1. VMware(1):MacOS虚拟机无法设置自动调整大小(已解决)

    如果你在安装好MacOS虚拟机之后,发现页面分辨率特别小,页面不能够自适应客户端窗口:并且[查看 --> 自动调整大小]功能栏里的功能还是灰色的. 那请参照如下的步骤操作一套,包你解决: 点击可 ...

  2. win10未开启没有运行无线服务器,win10系统提示共享无线自动配置服务没有自动运行的解决办法...

    win10系统提示共享无线自动配置服务没有自动运行的解决办法? win10系统有很多人都喜欢使用,我们操作的过程中常常会碰到win10系统提示共享无线自动配置服务没有自动运行的问题.如果遇到win10 ...

  3. DEDECMS站点内容自动更新到新浪微博的方法

    小编给大家分享一下DEDECMS站点内容自动更新到新浪微博的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  DEDE ...

  4. win7系统5分钟就会自动注销的解决教程

    我们在电脑使用的过程中,有时候会遇到过5分钟就自动注销的情况.一般来说都是因为电脑中了病毒,启动程序遭到了恶意修改,或者系统启动文件因为某些操作删除或损坏了,就此问题,下面小编介绍win7系统5分钟就 ...

  5. win7系统5分钟自动注销的解决方法

    我们在电脑使用的过程中,有时候会遇到过5分钟就自动注销的情况.一般来说都是因为电脑中了病毒,启动程序遭到了恶意修改,或者系统启动文件因为某些操作删除或损坏了,我们可以用下面的方法尝试解决. win7系 ...

  6. 【原】如何实现IE6下块级元素的内容自动收缩

    近期在做提示层组件的开发,遇到了一个IE6常见的bug....想出了几个解决的办法,挺有意思的,这里分享给大家. 由于IE6浏览器中,display:inline-block只能触发IE的haslay ...

  7. html两个字段自动相加,HTML_两个并列的div让其根据内容自动保持同等高度,我们看下下面这个问题:有左 - phpStudy...

    两个并列的div让其根据内容自动保持同等高度 我们看下下面这个问题:有左右2个并列的div,2个div都不能限定高度.左div为导航,右div为内容.如何能让左div块自动获得和右div块相等的高度? ...

  8. 海湾crt显示与服务器连接断开,secureCRT自动断开的解决方法

    转: secureCRT自动断开的解决方法 在secureCRT上登录时,一段时间不用的话会自动断开,必须重新连接,有点麻烦. 有时候服务器端的 /etc/profile 或者 ~/.bash_pro ...

  9. html图片超出内容隐藏,图片按比例缩小,溢出超出DIV边框的内容自动隐藏方法!...

    这几天在学习百度搜索结果出现缩略图的方法,百度PC的缩略图比例:121:75,我的文章列表页的比例为121:54,比例相差太大,所以最近的文章缩略图基本没有. 而如果将列表图片改为121:75比例后, ...

最新文章

  1. thinkphp mysql函数_php封装的数据库函数与用法示例【参考thinkPHP】
  2. Android 相机,视频录制
  3. mongodb Install the MongoDB service
  4. 汉字转拼音php代码函数,php中将汉字转换成拼音的函数代码
  5. 我们应该如何选择DR
  6. html框架实验总结,网页设计实训心得
  7. Java 连接MS Access数据库
  8. 涨薪关键之反射机制,引得项目经理对你的看重,加薪触手可及!!!!
  9. 2020护网参考学习 关于护网行动的总结
  10. 【实践】飞猪交通个性化搜索推荐技术的实践与创新(附PPT下载链接)
  11. c语言宏定义替换字符串,C语言中,宏替换的替换规则
  12. DIV 内滚动条 样式的写法
  13. 发言倒计时器_单面会议计时器 会议发言倒计时器
  14. 【第四章】详解Feign的实现原理
  15. html5富文本编辑器菜鸟手册,富文本编辑器froalaEditor(全面)附教程
  16. 惊帆健康监测模块,心率检测模块
  17. spark core源码分析16 Shuffle详解-读流程
  18. 【JS继承】什么是JS继承?
  19. iQOO来了,vivo真的走了一步好棋?
  20. java8学习之双冒号用法

热门文章

  1. Windows安装程序无法将Windows配置未在此计算机的硬件上运行-解决方法
  2. 配置使用豆瓣pip源
  3. 如何禁止后缀名为“VBS、VBE、JS、JSE、WSH、WSF”文件被执行
  4. from skimage import morphology 报错
  5. winform关闭当前form_C#如何关闭FORM窗口
  6. 垃圾分代回收机制简单介绍
  7. daphile的dsd设置_玩Daphile Digital Mus(2)
  8. ClickHouse MergeTree启动加速--使用篇
  9. 2016-ECCV-《Learning without Forgetting》论文阅读笔记
  10. VS2010快捷键及设置