2013-11-27 14 views
6

Attualmente ho un layout orizzontale con due layout verticali. Vlayout1 e VLayout2. Ora voglio impostare un limite di larghezza massimo di VLayout1 in modo che se il modulo viene espanso dopo, solo Vlayout1 si espande.
Qualche suggerimento su come potrei realizzare questo?Qt: Come impostare la larghezza massima di un QVBoxlayout

risposta

0

Non è possibile impostare la dimensione massima di QVBoxLayout. Probabilmente dovrai impostare la dimensione massima sui widget che il layout contiene. Se si desidera che uno dei layout di allungare mentre l'altro rimane la stessa dimensione che si può provare il seguente nel MainWindow costruttore:

QPushButton* btn1 = new QPushButton("Button1"); 
    QPushButton* btn2 = new QPushButton("Button2"); 
    QHBoxLayout* hLayout = new QHBoxLayout; 
    QVBoxLayout* vLayout1 = new QVBoxLayout; 
    QVBoxLayout* vLayout2 = new QVBoxLayout; 

    hLayout->addLayout(vLayout1, 1); 
    hLayout->addLayout(vLayout2, 0); 
    vLayout1->addWidget(btn1); 
    vLayout2->addWidget(btn2); 

    QWidget* placeholder = new QWidget; 
    placeholder->setLayout(hLayout); 
    setCentralWidget(placeholder); 

Se si ridimensiona la finestra ora, vedrete il layout che contiene Button2 allungamento mentre il layout contenente Button1 rimane della stessa dimensione.

6

Si può fare un "hack" e inserire il vostro layout all'interno di un widget

QWidget *controlsRestrictorWidget = new QWidget(); 
QVBoxLayout *layoutVControls = new QVBoxLayout(); 
controlsRestrictorWidget->setLayout(layoutVControls); 
controlsRestrictorWidget->setMaximumWidth(350); 

Funziona :)

Problemi correlati