2015-08-27 59 views
0

我得到了以下裝置(原here):Qt的奇數佈局排列

test_image

五unconvencional用unsual尺寸按鈕(重量:400,H:300),並且它們被佈置INT方式如下:4正方形模式(兩個在頂部,兩個在按鈕),緊緊在一起,第五個按鈕在中間,與其他四個按鈕的交叉點重疊。我想知道當我擴展,最大化和/或最小化窗口時,是否有任何佈局(網格佈局,表單佈局等)可用於保持此安排?謝謝你的幫助。

回答

0

rowSpan(聽起來像一個家庭作業的問題。)

我的第一種方法是隻母第二部件到第一部件。然後你必須得到第二個部件來調整第一個部件。我已經在pop up dialogs in iOS的過去做過。

@ hyde的解決方案對於這個問題要優雅得多。我將所有內容放在堆上,但對於這樣一個簡單的應用程序,所有內容都可以放在堆棧上(QWidget * w = new QWidget(); =>QWidget w;)。

#include <QApplication> 
#include <QWidget> 
#include <QGridLayout> 
#include <QPushButton> 
#include <QList> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 

    QWidget * w = new QWidget(); 

    QGridLayout * grid = new QGridLayout(); 

    QList <QPushButton *> buttons; 
    for(int i = 0; i< 5; i++) 
    { 
     buttons.append(new QPushButton("Button "+ QString::number(i+1))); 
     buttons.last()->setFixedSize(400, 300); 
    } 

    grid->addWidget(buttons.at(0),0,0,2,2);// upper left 
    grid->addWidget(buttons.at(1),0,2,2,2);// upper right 
    grid->addWidget(buttons.at(2),2,0,2,2);// lower left 
    grid->addWidget(buttons.at(3),2,2,2,2);// lower right 
    grid->addWidget(buttons.at(4),1,1,2,2);// centered 

    w->setLayout(grid); 

    w->show(); 

    return a.exec(); 
} 

如果你想在網格元素,以保持居中,不能有縫隙,當你調整網格的大小,請確保您添加一個緩衝行/列外繞,併爲他們延長值。像這樣的example

希望有所幫助。

+0

感謝您的回覆。我會嘗試它讓你知道。 – guilhermemfreire