2012-10-23 110 views
2

下面是如何繪製一個按鈕,跨越2列:行跨度無法正常運行

#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(); 
} 

運行代碼給我:

enter image description here

如果我更改佈局爲了得到一個按鈕,這個跨越2行的按鈕我失敗了:

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

這裏是我所得到的:

enter image description here

回答

4

您的佈局精美,巴茲按鈕跨越兩行。問題是它沒有使用所有可用的空間。您必須將按鈕的垂直調整大小策略從固定更改爲最小展開。

4

添加以下,之後,一切都很好:

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

thanks