QT表格QTableWidget在win10下纵横表头无分隔线的问题
Posted 小哈龙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT表格QTableWidget在win10下纵横表头无分隔线的问题相关的知识,希望对你有一定的参考价值。
一.问题
最近在Win10 下使用QT开发界面程序,遇到了一个问题,在使用QTableWidget 表格式出现了以下问题,如图:
为什么左边表头中间 每行之间没有分割线,其实上面表头下面的线默认也是没有的,是后来加上去的,这个间隔线在其它版本系统上是存在的。
这个问题很早就遇见过,一直没有找到解决方法,今天在搜索资料时,偶然在网上看见了一片文章,对解决此问题帮助很大。
二.导致该问题的原因
为什么纵横表头会没有分隔线呢,在网上查阅了一些资料,原来是因为win10的风格如此,在其它版本系统上是不存在这样的问题的,在Windows 10上,绘制图元不会绘制底部边框(这是默认的Windows 10表头样式 - 可以在Windows文件资源管理器中看到)。QT会使用当前系统风格的UI显示样式,这也可以理解
三.添加分隔线
下面就着手解决该问题,在win10下手动设置表格 纵横头的间隔线,如下代码,可以在代码中直接使用设置自己的QTableWidget对象
//如下代码设置横向表格头的间隔线,有四个方向的间隔线,不需要间隔线的可以设置为0px
ui.myTableWidget->horizontalHeader()->setStyleSheet(
"QHeaderView::section"
"border-top:0px solid #E5E5E5;"
"border-left:0px solid #E5E5E5;"
"border-right:0.5px solid #E5E5E5;"
"border-bottom: 0.5px solid #E5E5E5;"
"background-color:white;"
"padding:4px;"
""
)
//如下代码设置横向表格头的间隔线,有四个方向的间隔线,不需要间隔线的可以设置为0px
ui.myTableWidget->verticalHeader()->setStyleSheet(
"QHeaderView::section"
"border-top:0px solid #E5E5E5;"
"border-left:0px solid #E5E5E5;"
"border-right:0.5px solid #E5E5E5;"
"border-bottom: 0.5px solid #E5E5E5;"
"background-color:white;"
"padding:4px;"
""
)
//如下代码设置列表左上角第0行第0列的那个格子的边框线
ui.myTableWidget->verticalHeader()->setStyleSheet(
"QTableCornerButton::section"
"border-top:0px solid #E5E5E5;"
"border-left:0px solid #E5E5E5;"
"border-right:0.5px solid #E5E5E5;"
"border-bottom: 0.5px solid #E5E5E5;"
"background-color:white;"
""
)
参考文章:在QTableWidget中的列标题下添加边框 - Thinbug
以上是关于QT表格QTableWidget在win10下纵横表头无分隔线的问题的主要内容,如果未能解决你的问题,请参考以下文章