我有一个动态添加 QTableWidgets 的 ScrollView 。但是,QTables 本身也有滚动条,因此不会显示完整的表格。有没有办法禁用滚动条,以便表格始终完整显示?
编辑:我添加了
self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
按照建议。滚动条确实消失了,但它仍然只显示部分表格(我仍然可以通过悬停在表格上并使用鼠标滚轮来滚动)。 Widget 的代码如下
from PySide.QtGui import *
from PySide.QtCore import *
class MdTable(QTableWidget):
def __init__(self, data, depth, *args):
QTableWidget.__init__(self, *args)
self.hheaders = ["c1", "c2", "c3", "c4"]
self.depth = depth
self.bids = data
self.setData()
def setData(self):
self.setRowCount(self.depth)
self.setColumnCount(5)
for i in xrange(self.depth):
if len(self.data) > i:
d1= QTableWidgetItem(str(self.data[i][0]))
d2= QTableWidgetItem(str(self.data[i][1]))
self.setItem(i, 1, d1)
self.setItem(i, 2, d2)
self.setHorizontalHeaderLabels(self.hheaders)
self.verticalHeader().setVisible(False)
self.resizeRowsToContents()
self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
最佳答案
如果你只想删除你必须使用的滚动条:
{QtableWidget}.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
{QtableWidget}.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
如果你想显示扩展的QTableWidget
,把这个添加到setData()
方法的末尾:
self.setMaximumSize(self.getQTableWidgetSize())
self.setMinimumSize(self.getQTableWidgetSize())
并像这样定义getQTableWidgetSize(self)
:
def getQTableWidgetSize(self):
w = self.verticalHeader().width() + 4 # +4 seems to be needed
for i in range(self.columnCount()):
w += self.columnWidth(i) # seems to include gridline (on my machine)
h = self.horizontalHeader().height() + 4
for i in range(self.rowCount()):
h += self.rowHeight(i)
return QtCore.QSize(w, h)
注意:
getQTableWidgetSize
函数是将C++中的代码转换为以下帖子的python:How to determine the correct size of a QTableWidget?
关于python - 删除滚动条以显示完整表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41542934/