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:0.5px solid #E5E5E5;"
            "border-left:0px solid #E5E5E5;"
            "border-right:0.5px solid #E5E5E5;"
            "border-bottom: 0px solid #E5E5E5;"
            "background-color:white;"
            "padding:4px;"
        ""
)

参考文章:在QTableWidget中的列标题下添加边框 - Thinbug

以上是关于QT表格QTableWidget在win10下纵横表头无分隔线的问题的主要内容,如果未能解决你的问题,请参考以下文章

QT控件之Qtable Widget

qt5--表格控件QTableWidget

qtablewidget怎样设置表

Qt入门系列开发教程高级控件篇QTableWidget表格小部件

Qt怎么把QTableWidget表格中的数据读取出来

Qt 添加表格小部件项目的问题