chr*_*ise 6 python pyqt qtablewidget pyside
我有一个可向其中动态添加QTableWidgets的滚动视图。但是,QTables本身也具有滚动条,因此不会显示完整表。有没有一种方法可以禁用滚动条,以便始终显示完整的表格?
编辑:我添加了
self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
Run Code Online (Sandbox Code Playgroud)
按照建议。滚动条确实消失了,但是它仍然只显示部分表格(Ican可以在表格上悬停并使用鼠标滚轮进行滚动)。窗口小部件的代码如下
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)
Run Code Online (Sandbox Code Playgroud)
如果您只想删除滚动条,则必须使用:
{QtableWidget}.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
{QtableWidget}.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
Run Code Online (Sandbox Code Playgroud)
如果要显示扩展的QTableWidget,请将其添加到setData()方法的末尾:
self.setMaximumSize(self.getQTableWidgetSize())
self.setMinimumSize(self.getQTableWidgetSize())
Run Code Online (Sandbox Code Playgroud)
并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)
Run Code Online (Sandbox Code Playgroud)
注意:
该函数getQTableWidgetSize是将以下帖子的C++代码转换为python:如何确定QTableWidget的正确大小?