【发布时间】:2016-11-28 00:31:12
【问题描述】:
我有一个表格小部件,对话框中有两个列标题,如下所示:
名为“索引”和“标签”的列标题之间存在分隔,但这些标题与其下方的行之间没有分隔边界。这个怎么加?
假设表被实例化为:
table = QTableWidget(6, 2, self)
我知道我可以通过 headerItem = table.horizontalHeaderItem(0) 修改一些属性并将其重新设置来获得第一个水平标题作为 QTableWidgetItem,但我不确定要设置哪些属性或者是否有更直接的方法。
编辑:
如果我通过以下方式提取标题并设置其底层框架的样式、阴影和线宽属性:
header = table.horizontalHeader()
header.setFrameStyle(QFrame.Box | QFrame.Plain)
header.setLineWidth(1)
table.setHorizontalHeader(header)
我最终得到的东西看起来像这样:
这样,标题周围就会出现边框。这可以单独为每个标题项完成,但有几个问题:
- 边框超出了下方单元格的宽度
- 我仍然需要将框架的颜色与现有的线条相匹配,这样才能看起来不错。
- 看来,分隔“索引”和“标签”的垂直线相对于分隔下方单元格的线发生了偏移(除非我的眼睛在欺骗我)。
有没有更“内置”的方法来做到这一点?
【问题讨论】:
-
QTableWidget::horizontalHeader()返回一个指向关联的QHeaderItem的指针,该指针(向下几级)继承QFrame。设置框架样式/形状/宽度有什么影响吗? -
您的建议在整个标题周围创建了一个边框,并且可以单独用于每个标题项,但存在一些问题。见编辑
标签: python qt pyqt border qtablewidget