如何让QDialog根据内容自动调整大小?
我在用PyQt4。
我想在一个QDialog
里显示一个QTableWidget
,这是我用的代码:
w = QDialog()
layout = QGridLayout()
tw = QTableWidget(w)
... code to setup tw ...
layout.addWidget(tw, 0, 0)
w.setLayout(layout)
w.exec_():
生成的QDialog
运行得很好,但它只显示了QTableWidget
的一部分,不管表格里有多少列。所以我得拖动边框来调整大小。
有没有办法让这个QDialog一开始就自动调整到合适的大小呢?
我试过用adjustSize()
和setSizePolicy(QSizePolicy(QSizePolicy.Expanding))
,但都没用。
谢谢。
2 个回答
1
你可以试试
w.resize(tw.width(),tw.height())
2
把你的表格设置成这样:
tw.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
tw.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
tw.horizontalHeader().hide()
tw.verticalHeader().hide()
在你填充数据之后再调整它的大小:
tw.resizeRowsToContents()
tw.resizeColumnsToContents()
然后像这样设置对话框的大小:
dialogWidth = tw.horizontalHeader().length() + 24
dialogHeight= tw.verticalHeader().length() + 24
w.setFixedSize(dialogWidth, dialogHeight)
无论你的表格有多少行或列,以及表格单元格里有什么内容,对话框都会自动调整到合适的大小。