我在用PyQt4。
我想在aQTableWidget中显示aQDialog,下面是我使用的代码:

    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))但它们都不起作用。
谢谢。

最佳答案

把桌子摆成这样:

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单元格中的内容

09-26 16:11