我正在研究一个相当简单的PyQt程序,它基本上只是一个QTableWidget
项目。我的目标是根据父QTableWidget
的大小自动调整项目的宽度和高度。例如,如果我将窗口调整得更小,则项目的宽度和高度应减小,但应保留相同数量的项目,并且项目仍应完全填充父QTableWidget
。如您所见,我目前正在使用setColumnWidth
和setRowHeight
手动设置宽度和高度。
我已经尝试了以下Stack Overflow问题中的建议,以及许多其他问题和网站,其中没有一个是我正在尝试做的事情。
1. How to make qtablewidgets columns assume the maximum space
2. pyqt how to maximize the column width in a tableview
以下是我目前使用的代码:
from PyQt4 import QtGui, QtCore
import PyQt4.Qt
class Window(QtGui.QWidget):
def __init__(self, rows, columns):
super(Window, self).__init__()
self.setWindowState(QtCore.Qt.WindowMaximized)
self.table = QtGui.QTableWidget(rows, columns, self)
self.table.verticalHeader().setVisible(False)
self.table.horizontalHeader().setVisible(False)
# this is what I am currently using to set the row and column size
for x in range(columns):
self.table.setColumnWidth(x, 13)
for x in range(rows):
self.table.setRowHeight(x, 13)
for row in range(rows):
for column in range(columns):
item = QtGui.QTableWidgetItem()
self.table.setItem(row, column, item)
layout = QtGui.QGridLayout(self)
layout.addWidget(self.table, 0, 0, 1, 6)
self.show()
def main():
import sys
app = QtGui.QApplication(sys.argv)
window = Window(54, 96)
sys.exit(app.exec_())
if __name__ == "__main__":
main()
我赞成这个问题的长度,但我想让我的问题非常明确。提前谢谢大家的帮助!
答案 0 :(得分:0)
您可以使用QItemDelegate
并覆盖sizeHint
方法执行此操作。然后覆盖主要窗口小部件的__sub
和resizeEvent
方法,以便在窗口小部件调整大小时更新每个单元格的大小。
showEvent