如何修复 table 中跨越单元格后的空边框线?
How fix empty border line after spanning cells in table?
我正在研究 python 脚本并且我使用 PyQt4。当我尝试使用函数 setSpan(row, col, rowSpanWidth, colSpanWidth)
进行跨越并使用 "author" 应用于单元格时。我得到这个结果,边界被清除,我不知道为什么。跨越在 table 或另一个(右)side/edge 内的单元格上工作正常。左边是不对的。
决赛table
任何人都可以给我一个提示,我应该怎么做才能跨越好的或建议吗?
代码:
self.table = QTableWidget()
self.table.setRowCount(7)
self.table.setColumnCount(2)
self.table.verticalHeader().setVisible(False)
self.table.horizontalHeader().setVisible(False)
# add data into table
for indexRow, row in enumerate(tableDict):
for indexCol, col in enumerate(tableDict[indexRow]):
self.table.setItem(indexRow, indexCol, QTableWidgetItem(tableDict[indexRow][indexCol]))
self.table.setSpan(3, 0, 2, 1)
# table is readable only
self.table.setStyleSheet("border:0px;")
self.table.setFocusPolicy(Qt.NoFocus)
self.table.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.table.setSelectionMode(QAbstractItemView.NoSelection)
self.table.setShowGrid(True)
self.table.resizeColumnsToContents()`
经过几个小时的尝试修复错误,我发现了不清楚的解决方案,但主要是它有效:-)
1) 当边框显示不正确时,在侧面添加额外的空列。
2) 在 table 内包含数据的跨度列。
3) 将额外的列宽设置为 1px(它只使行)。
代码:
self.table = QTableWidget()
self.table.setRowCount(7)
self.table.setColumnCount(2 + 1) # added 1 extra column
self.table.verticalHeader().setVisible(False)
self.table.horizontalHeader().setVisible(False)
# add data into table
for indexRow, row in enumerate(tableDict):
for indexCol, col in enumerate(tableDict[indexRow]):
self.table.setItem(indexRow, indexCol + 1, QTableWidgetItem(tableDict[indexRow][indexCol]))
self.table.setSpan(3, 0 + 1, 2, 1)
# table is readable only
self.table.setFocusPolicy(Qt.NoFocus)
self.table.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.table.setSelectionMode(QAbstractItemView.NoSelection)
self.table.setShowGrid(True)
self.table.resizeColumnsToContents()
self.table.setColumnWidth(0, 1) # need to be after resizeColumnsToContents(), or it will not works
Right result here
我正在研究 python 脚本并且我使用 PyQt4。当我尝试使用函数 setSpan(row, col, rowSpanWidth, colSpanWidth)
进行跨越并使用 "author" 应用于单元格时。我得到这个结果,边界被清除,我不知道为什么。跨越在 table 或另一个(右)side/edge 内的单元格上工作正常。左边是不对的。
决赛table
任何人都可以给我一个提示,我应该怎么做才能跨越好的或建议吗?
代码:
self.table = QTableWidget()
self.table.setRowCount(7)
self.table.setColumnCount(2)
self.table.verticalHeader().setVisible(False)
self.table.horizontalHeader().setVisible(False)
# add data into table
for indexRow, row in enumerate(tableDict):
for indexCol, col in enumerate(tableDict[indexRow]):
self.table.setItem(indexRow, indexCol, QTableWidgetItem(tableDict[indexRow][indexCol]))
self.table.setSpan(3, 0, 2, 1)
# table is readable only
self.table.setStyleSheet("border:0px;")
self.table.setFocusPolicy(Qt.NoFocus)
self.table.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.table.setSelectionMode(QAbstractItemView.NoSelection)
self.table.setShowGrid(True)
self.table.resizeColumnsToContents()`
经过几个小时的尝试修复错误,我发现了不清楚的解决方案,但主要是它有效:-)
1) 当边框显示不正确时,在侧面添加额外的空列。 2) 在 table 内包含数据的跨度列。 3) 将额外的列宽设置为 1px(它只使行)。
代码:
self.table = QTableWidget()
self.table.setRowCount(7)
self.table.setColumnCount(2 + 1) # added 1 extra column
self.table.verticalHeader().setVisible(False)
self.table.horizontalHeader().setVisible(False)
# add data into table
for indexRow, row in enumerate(tableDict):
for indexCol, col in enumerate(tableDict[indexRow]):
self.table.setItem(indexRow, indexCol + 1, QTableWidgetItem(tableDict[indexRow][indexCol]))
self.table.setSpan(3, 0 + 1, 2, 1)
# table is readable only
self.table.setFocusPolicy(Qt.NoFocus)
self.table.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.table.setSelectionMode(QAbstractItemView.NoSelection)
self.table.setShowGrid(True)
self.table.resizeColumnsToContents()
self.table.setColumnWidth(0, 1) # need to be after resizeColumnsToContents(), or it will not works
Right result here