我正在寻找一种方法来挤出QTableWidget
个细胞中的所有空间。我已经粘贴了一些代码来演示我在下面尝试的内容,并且我上传了在OSX 10.8.5,Qt 4.8.4,PySide 1.2.1上生成的屏幕截图。我想要的是能够设置valueIWantToBeZero = 0
以使单元格完全单个字符的大小,并且我可以将尽可能多的列打包到可用空间中。如果我在此示例中设置了valueIWantToBeZero = 0
,则文本将从单元格的右侧消失。在每个单元格的左侧似乎有大约5个像素的填充,我无法摆脱。顶部也有1个像素,底部有2个像素,但我并不关心垂直间距。
如何使单元格完全符合一个字符的宽度?
感谢您的任何建议! : - )
#! /usr/bin/env python
import sys
from PySide import QtCore, QtGui
class TableWidget(QtGui.QTableWidget):
def __init__(self, parent):
super(TableWidget, self).__init__(parent)
font = QtGui.QFont("Courier",12,QtGui.QFont.Normal)
font.setKerning(False)
font.setLetterSpacing(QtGui.QFont.PercentageSpacing,0.0)
font.setHintingPreference(QtGui.QFont.PreferNoHinting)
font.setWordSpacing(0.0)
self.setFont(font)
self.setStyleSheet("QHeaderView::section:horizontal {margin: 0px; border: 0; padding 0px}")
self.setStyleSheet("QTableView::item {padding: 0px; margin: 0px; border: 0; background-color: orange; }")
valueIWantToBeZero = 5
hheader = self.horizontalHeader()
hheader.setFont(font)
hheader.setDefaultSectionSize(hheader.fontMetrics().width("A")+valueIWantToBeZero)
vheader = self.verticalHeader()
vheader.setDefaultSectionSize(vheader.fontMetrics().height())
dim = 10
self.setColumnCount(dim)
self.setRowCount(dim)
for r in range(dim):
for c in range(dim):
item = QtGui.QTableWidgetItem(str(r))
self.setItem(r,c,item)
def main():
app = QtGui.QApplication(sys.argv)
window = QtGui.QWidget()
window.setGeometry(100,100,200,200)
tw = TableWidget(window)
twLayout = QtGui.QVBoxLayout()
twLayout.addWidget(tw)
window.setLayout(twLayout)
window.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
答案 0 :(得分:0)
我最终使用QGraphicsScene
将细胞和网格线精确地绘制在我想要的位置,所以这是这个问题的一个可能答案。也就是说,我仍然怀疑有一种方法可以控制QTableWidget
的所有边距,但也许没有这个版本的Qt?