2012-10-23 1 views
2

Voici comment dessiner un bouton qui couvre 2 colonnes:rowspan de QGridLayout ne fonctionne pas comme prévu

#include <QtGui> 

int main(int argv, char **args) 
{ 
    QApplication app(argv, args); 

    QPushButton *foo = new QPushButton("foo"); 
    QPushButton *bar = new QPushButton("bar"); 
    QPushButton *baz = new QPushButton("baz"); 

    QGridLayout *layout = new QGridLayout(); 
    layout->addWidget(foo, 0, 0); 
    layout->addWidget(bar, 0, 1); 
    layout->addWidget(baz, 1, 0, 1, 2); // span 2 columns 

    QWidget window; 
    window.setLayout(layout); 
    window.setWindowTitle("test"); 
    window.show(); 

    return app.exec(); 
} 

L'exécution du code me donne:

enter image description here

Si je change la mise en page afin d'obtenir un bouton, baz, qui enjambe 2 rangs I Fail:

layout->addWidget(foo, 0, 0); 
layout->addWidget(bar, 1, 0); 
layout->addWidget(baz, 0, 1, 2, 1); // (try to) span 2 rows 

Voici ce que je reçois:

enter image description here

Répondre

4

Votre mise en page est très bien, le bouton baz est Spanning deux lignes. Le problème est qu'il n'utilise pas tout l'espace disponible. Vous devez modifier la politique de redimensionnement vertical de votre bouton de Fixed à MinimumExpanding.

4

j'ajouté ce qui suit, après quoi tout allait bien:

foo->setSizePolicy(QSizePolicy::MinimumExpanding, 
        QSizePolicy::MinimumExpanding); 
bar->setSizePolicy(QSizePolicy::MinimumExpanding, 
        QSizePolicy::MinimumExpanding); 
baz->setSizePolicy(QSizePolicy::MinimumExpanding, 
        QSizePolicy::MinimumExpanding); 

(thanks)

Questions connexes