2010-02-22 15 views
6

QWabel'de bir QLabel ve QLineEdit var. Bir QScrollArea içinde widget'ım olduğunda, satır düzenlemesi pencerenin fazla genişliğini işgal edecek şekilde genişletilmez. Widget kaydırma alanı içinde değilse, genişler.QLineEdit'in içinde nasıl genişletilir QScrollArea

Satır düzenlemesi ve küçük aracın boyut ilkesini yatay olarak genişletmek için ayarlamayı denedim, ancak fazla alanı kaplamıyor. Bir kaydırma alanı içinde olduğunda widget'ın sizeHint() yönteminin sıkıştırıldığından şüpheleniyorum. Bu işin nasıl yapılacağı hakkında bir fikrin var mı?

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) 

cevap

7

Sorununuzu çözdüğümü düşünüyorum.

sizin koduna şu ek yapın ve doğru davranması gerektiği: docs itibaren

... 

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

    ... 

,

widgetResizable: bool

Bu özellik tutan kaydırma alanına olmadığını Görünüm widget'ını yeniden boyutlandırmalı.

Bu özellik true olarak ayarlanmışsa, kaydırma alanı önlenemediği kaydırma çubuklarından kaçınmak veya ekstra alandan yararlanmak için widget'i otomatik olarak yeniden boyutlandıracaktır.

+0

Mükemmel! Teşekkürler! – Graeme