如何使QDIalog自动调整大小到其内容的大小?

时间:2011-11-06 08:05:05

标签: python qt pyqt

我正在使用PyQt4。

我想在QTableWidget中显示QDialog,这是我使用的代码:

    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 个答案:

答案 0 :(得分:0)

像这样设置你的表:

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)

对话框会自动调整大小,无论你有多少行或列,以及tableWidget单元格内部是什么

答案 1 :(得分:0)

你可以尝试

       w.resize(tw.width(),tw.height())