我用这些参数创建了一个QTableWidget。
def fill_table(self):
self.tableWidget = QTableWidget(self.view_frame)
self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.tableWidget.setAlternatingRowColors(True)
self.tableWidget.setFocusPolicy(Qt.NoFocus)
self.tableWidget.setShowGrid(False)
self.tableWidget.setSortingEnabled(True)
self.tableWidget.horizontalHeader().setHighlightSections(False)
self.tableWidget.horizontalHeader().setProperty("showSortIndicator", True)
self.tableWidget.horizontalHeader().setStretchLastSection(True)
self.tableWidget.verticalHeader().setVisible(False)
self.tableWidget.verticalHeader().setHighlightSections(False)
self.ui.tableWidget.setRowCount(0)
self.ui.tableWidget.setColumnCount(6)
self.ui.tableWidget.setRowCount(len(self.zipped_log))
self.ui.tableWidget.setSelectionBehavior(QAbstractItemView.SelectRows)
self.ui.tableWidget.setSelectionMode(QAbstractItemView.SingleSelection)
self.ui.tableWidget.setVerticalScrollMode(QAbstractItemView.ScrollPerPixel)
self.ui.tableWidget.setHorizontalScrollMode(QAbstractItemView.ScrollPerPixel)
self.ui.tableWidget.setFocusPolicy(Qt.NoFocus)
for i in range(len(self.zipped_log)):
self.ui.tableWidget.setItem(i, 0, QTableWidgetItem(str(self.zipped_log[i]['date'])))
self.ui.tableWidget.setItem(i, 1, QTableWidgetItem(str(self.zipped_log[i]['time'])))
self.ui.tableWidget.setItem(i, 2, QTableWidgetItem(self.zipped_log[i]['source']))
self.ui.tableWidget.setItem(i, 3, QTableWidgetItem(self.zipped_log[i]['code']))
self.ui.tableWidget.setItem(i, 4, QTableWidgetItem(str(self.zipped_log[i]['severity'])))
self.ui.tableWidget.setItem(i, 5, QTableWidgetItem(self.zipped_log[i]['description']))
self.ui.tableWidget.resizeColumnsToContents()
self.ui.tableWidget.resizeRowsToContents()
self.ui.tableWidget.horizontalHeader().setStretchLastSection(True)
def resizeEvent(self, event):
self.ui.tableWidget.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
self.ui.tableWidget.setWordWrap(False)
QMainWindow.resizeEvent(self, event)
除了用不同的内容填充表格和调整窗口大小之外,其他都运行良好。
在第一步中,我用适合窗口大小的短行填充表格。如果我再次调用filling函数,使用长行,这不适合窗口的大小,这些行将激活水平滚动条,所有工作正常,我可以水平滚动它们。但是在调整窗口大小后,长行开始换行,我再也不能用水平滚动条滚动它们了。
它看起来像三个点...
,不是在行的实际末端,而是在窗口的边缘。
我已经尝试过使用resizeEvent,但它没有帮助。
如何解决此问题?我想要一个动态的水平滚动条,这将显示需要和行将不会换行后调整窗口
2条答案
按热度按时间e0bqpujr1#
setStretchLastSection()
将最后一节的调整大小模式更改为QHeaderView.Stretch
。在Stretch
模式下,无论列的内容是否比节宽,节总是填充可用空间,因此不会出现水平滚动条。(节的大小不会增加以适应列的内容。)因此,如果您使用
QTableView.resizeColumnsToContents()
,我建议您不要使用setStretchLastSection()
。如果您不介意以一种笨拙的方式手动调整列的大小,您可以这样做。(这是hacky,因为它可能会在未来的Qt版本中被打破。
dw1jzc5e2#
主要的问题是,表记住最长的行长度,并使用它,即使不同的文件与较短的行。所以,我只是更新最后一节每次我重新填充表的内容。我已经解决了这样的问题:
在MainClass中: