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

Der*_*ang 6 python qt pyqt

我正在使用 PyQt4。

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

    w = QDialog()
    layout = QGridLayout()
    tw = QTableWidget(w)

    ... code to setup tw ...

    layout.addWidget(tw, 0, 0)
    w.setLayout(layout)
    w.exec_():
Run Code Online (Sandbox Code Playgroud)

结果QDialog工作正常,只是它只显示QTableWidget表中众多列的一部分。所以我必须拖动边框来调整它的大小。

有没有办法让 QDialog 首先自动调整到正确的大小?

我尝试使用adjustSize()setSizePolicy(QSizePolicy(QSizePolicy.Expanding))但它们都不起作用。

谢谢。

Ale*_*dar 2

像这样设置你的桌子:

tw.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
tw.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
tw.horizontalHeader().hide()          
tw.verticalHeader().hide()
Run Code Online (Sandbox Code Playgroud)

填充后调整其大小:

tw.resizeRowsToContents()
tw.resizeColumnsToContents() 
Run Code Online (Sandbox Code Playgroud)

然后设置对话框的大小,如下所示:

dialogWidth = tw.horizontalHeader().length() + 24
dialogHeight= tw.verticalHeader().length()   + 24
w.setFixedSize(dialogWidth, dialogHeight)
Run Code Online (Sandbox Code Playgroud)

无论您有多少行或列,以及 tableWidget 单元格内部有什么,对话框都会自动调整到正确的大小