pbr*_*ach 6 python qt border pyqt qtablewidget
我在对话框中有一个带有两列标题的表格小部件,如下所示:
名为“索引”和“标签”的列标题之间存在分隔,但这些标题与其下方的行之间没有分隔边界。这个怎么加?
假设表被实例化为:
table = QTableWidget(6, 2, self)
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过headerItem = table.horizontalHeaderItem(0)
修改一些属性并将其设置回第一个水平标题作为 QTableWidgetItem ,但我不确定要设置哪些属性或者是否有更直接的方法。
如果我提取标题并通过以下方式设置其底层框架的样式、阴影和线宽属性:
header = table.horizontalHeader()
header.setFrameStyle(QFrame.Box | QFrame.Plain)
header.setLineWidth(1)
table.setHorizontalHeader(header)
Run Code Online (Sandbox Code Playgroud)
我最终得到了如下所示的内容:
这样,标题周围就会出现边框。这可以单独为每个标题项目完成,但有几个问题:
有没有更“内置”的方式来做到这一点?
我有同样的问题。首先要注意的是,这只发生在 Windows 10 上。在其他操作系统上,没有什么可以修复的,它只是工作。但是,在 Windows 10 上,绘制基元不会绘制底部边框(这是默认的 Windows 10 表标题样式 - 正如在 Windows 文件资源管理器中所见)。这很不幸,但可以使用以下样式表解决:
if(QSysInfo::windowsVersion()==QSysInfo::WV_WINDOWS10){
setStyleSheet(
"QHeaderView::section{"
"border-top:0px solid #D8D8D8;"
"border-left:0px solid #D8D8D8;"
"border-right:1px solid #D8D8D8;"
"border-bottom: 1px solid #D8D8D8;"
"background-color:white;"
"padding:4px;"
"}"
"QTableCornerButton::section{"
"border-top:0px solid #D8D8D8;"
"border-left:0px solid #D8D8D8;"
"border-right:1px solid #D8D8D8;"
"border-bottom: 1px solid #D8D8D8;"
"background-color:white;"
"}");}
Run Code Online (Sandbox Code Playgroud)
很抱歉用 C++ 代码打扰你,但它应该很容易转换成有效的 pyqt 代码。
注意1:背景颜色和填充是不幸的,但它们是使我们的自定义渲染看起来像默认渲染所必需的。
注意2:边框的颜色是我系统上网格的颜色。我没有使用默认标题的颜色。
注3:该QTableCornerButton::section
部分需要在左上角下方添加缺失的边框。如果垂直标题不可见,则缺失的行也是不可见的。
希望这可以帮助。
归档时间: |
|
查看次数: |
7696 次 |
最近记录: |