问题
I have my qtablewidget defined like this:
def __init__(self, parent = None):
super(Window, self).__init__(parent)
QtGui.QWidget.__init__(self)
QtGui.QTableWidget.setMinimumSize(self, 500, 500)
QtGui.QTableWidget.setWindowTitle(self, "Custom table widget")
self.table = QtGui.QTableWidget()
rowf = 3
self.table.setColumnCount(3)
self.table.setRowCount(rowf)
self.table.setHorizontalHeaderItem(0, QtGui.QTableWidgetItem("col1"))
self.table.setHorizontalHeaderItem(1, QtGui.QTableWidgetItem("col2"))
self.table.setHorizontalHeaderItem(2, QtGui.QTableWidgetItem("col3"))
self.table.verticalHeader().hide()
header = self.table.horizontalHeader()
header.setResizeMode(0, QtGui.QHeaderView.ResizeToContents)
header.setResizeMode(1, QtGui.QHeaderView.ResizeToContents)
header.setResizeMode(2, QtGui.QHeaderView.ResizeToContents)
self.buttonBox = QtGui.QDialogButtonBox(self)
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel | QtGui.QDialogButtonBox.Ok)
self.verticalLayout = QtGui.QVBoxLayout(self)
self.verticalLayout.addWidget(self.table)
self.verticalLayout.addWidget(self.buttonBox)
self.buttonBox.accepted.connect(self.close)
self.buttonBox.rejected.connect(self.close)
I would like my end result to look something similar to the pic below but right now, the layout that I'm trying to add doesn't quiet work the way I'd like it to. I'm a beginner at pyqt. I've tried this layout before on a qlistview and it worked well.
回答1:
add {your table}.table.horizontalHeader().setStretchLastSection(True)
and/or {your table}.verticalHeader().setStretchLastSection(True)
import sys
from PyQt4 import QtGui
from PyQt4 import QtCore
class Window(QtGui.QWidget):
def __init__(self, parent=None):
super(Window, self).__init__(parent=parent)
QtGui.QTableWidget.setMinimumSize(self, 500, 500)
QtGui.QTableWidget.setWindowTitle(self, "Custom table widget")
self.table = QtGui.QTableWidget()
rowf = 3
self.table.setColumnCount(3)
self.table.setRowCount(rowf)
self.table.setHorizontalHeaderItem(0, QtGui.QTableWidgetItem("col1"))
self.table.setHorizontalHeaderItem(1, QtGui.QTableWidgetItem("col2"))
self.table.setHorizontalHeaderItem(2, QtGui.QTableWidgetItem("col3"))
self.table.horizontalHeader().setStretchLastSection(True)
# self.table.verticalHeader().setStretchLastSection(True)
self.buttonBox = QtGui.QDialogButtonBox(self)
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel | QtGui.QDialogButtonBox.Ok)
self.verticalLayout = QtGui.QVBoxLayout(self)
self.verticalLayout.addWidget(self.table)
self.verticalLayout.addWidget(self.buttonBox)
self.buttonBox.accepted.connect(self.close)
self.buttonBox.rejected.connect(self.close)
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
w = Window()
w.show()
sys.exit(app.exec_())
Only Horizontal:
Only Vertical:
Vertical and Horizontal:
来源:https://stackoverflow.com/questions/41319407/how-do-i-add-a-layout-to-a-qtablewidget-in-pyqt