2010-02-22 5 views
6

के अंदर QLineEdit का विस्तार कैसे करें मेरे पास QWidget के अंदर एक QLabel और QLineEdit है। जब मेरे पास QScrollArea के अंदर विजेट होता है, तो लाइन संपादन विंडो की अतिरिक्त चौड़ाई पर कब्जा करने के लिए विस्तारित नहीं होता है। जब विजेट स्क्रॉल क्षेत्र के अंदर नहीं होता है, तो यह विस्तार करता है।QScrollArea

मैंने क्षैतिज विस्तार करने के लिए लाइन संपादन और विजेट की आकार नीति सेट करने का प्रयास किया है, लेकिन यह अतिरिक्त स्थान पर कब्जा नहीं करता है। मुझे संदेह है कि स्क्रॉल एरिया के अंदर विजेट का आकार संकेत() कॉम्पैक्ट किया जाता है। कोई विचार यह काम कैसे करें?

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: bool

यह गुण रखती है कि क्या स्क्रॉल क्षेत्र दृश्य विजेट का आकार बदलना चाहिए।

यदि यह संपत्ति सत्य पर सेट की गई है, तो स्क्रॉल क्षेत्र स्वचालित रूप से स्क्रॉल बार से बचने के लिए विजेट का आकार बदल देगा जहां उन्हें टाला जा सकता है, या अतिरिक्त स्थान का लाभ उठाने के लिए।

+0

बिल्कुल सही! धन्यवाद! – Graeme