2010-02-22 77 views
6

擴大我有一個QLabel和一個QWidget內QLineEdit的。當我有一個QScrollArea裏面的部件,該行編輯不會擴展到佔據窗口的寬度過剩。當小部件不在滾動區域內時,它確實展開。如何使QLineEdit的內部QScrollArea

我已經嘗試設置行編輯和小部件的大小政策,水平擴展,但它不佔用多餘空間。我懷疑小部件的sizeHint()在滾動區域內被壓縮。任何想法如何使這項工作?

class MainWindow(QtGui.QMainWindow): 
def __init__(self): 
    QtGui.QMainWindow.__init__(self, None) 
    self.setWindowTitle('Test Window') 
    self.resize(500, 250) 

    scrollArea = QtGui.QScrollArea() 
    scrollWidget = QtGui.QWidget() 
    scrollWidget.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Maximum) 

    layout = QtGui.QGridLayout(scrollWidget) 
    label = QtGui.QLabel("Name:") 
    layout.addWidget(label, 0, 0) 
    lineEdit = QtGui.QLineEdit("Value") 
    lineEdit.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Maximum) 
    layout.addWidget(lineEdit, 0, 1) 
    scrollWidget.setLayout(layout) 

    scrollArea.setWidget(scrollWidget) 
    self.setCentralWidget(scrollArea) 

回答

7

我相信我已經解決了您的問題。

進行以下除了你的代碼,它應該正確行爲:

... 

    scrollArea.setWidget(scrollWidget) 
    scrollArea.setWidgetResizable(True) #add this 
    self.setCentralWidget(scrollArea) 

    ... 

docs

widgetResizable:布爾

這個屬性保存是否滾動區域應該調整視圖控件的大小。

如果此屬性設置爲true,滾動區域將自動調整窗口小部件,以避免在那裏他們可以被避免滾動條,或採取額外的空間優勢。

+0

完美!謝謝! – Graeme 2010-02-22 05:55:28