QGridLayout版面配置會如同棋盤般排列Widget,先來看個簡單的例子:
#include <QApplication>
#include <QWidget>
#include <QGridLayout>
#include <QLabel>
int main(int argc, char *argv[]) {
     QApplication app(argc, argv);
     const QString texts[] = {"One", "Two", "Three",
                              "Four", "Five", "Six",
                              "Seven", "Eight", "Nine"};
     QWidget *window = new QWidget;
     window->setWindowTitle("QGridLayout");
     window->resize(250, 100);
     
     QGridLayout *layout = new QGridLayout;
     layout->setSpacing(2);
     layout->setMargin(2);
     for(int i = 0, k = 0; i < 3; i++, k = k + 3) {
         for(int j = 0; j < 3; j++) {
             QLabel *label = new QLabel(texts[k + j]);
             label->setFrameStyle(QFrame::Panel + QFrame::Sunken);
             label->setMinimumSize(55, 0);
             label->setAlignment(Qt::AlignCenter);
             layout->addWidget(label, i, j);
         }
     }
 
     window->setLayout(layout);
     window->show();
     
     return app.exec();
}在版面配置的程式碼部份,setSpacing()與setMargin()設定每一個Grid的空間與彼此之間的邊界,再來利用迴圈將QLabel加入QGridLayout,程式中設定了QLabel的最小尺寸、顯示位向與樣式,注意在使用addWidget()方法時,可以指定您要將元件加入至哪一列(Row)哪一行(Column)。
程式執行時的參考畫面如下:

QGridLayout中不一定要每個格子依序填滿,只要指定想填入的位置,沒有指定的部份會自動空下,以下的程式是個簡單的示範:
#include <QApplication>
#include <QWidget>
#include <QGridLayout>
#include <QLabel>
int main(int argc, char **argv) {
    QApplication app(argc, argv);
    
    QWidget *window = new QWidget;
    
    QGridLayout *layout = new QGridLayout;
    layout->setColumnMinimumWidth(0, 200);
    layout->setColumnMinimumWidth(1, 100);
    
    QLabel *label1 = new QLabel("One");
    label1->setFrameStyle(QFrame::Panel + QFrame::Sunken);
    QLabel *label3 = new QLabel("Three");
    label3->setFrameStyle(QFrame::Panel + QFrame::Sunken);
    QLabel *label5 = new QLabel("Five");
    label5->setFrameStyle(QFrame::Panel + QFrame::Sunken);
    
    layout->addWidget(label1, 0, 0);
    layout->addWidget(new QLabel("Two"), 1, 0);
    layout->addWidget(label3, 2, 0);
    layout->addWidget(new QLabel("Four"), 1, 1);
    layout->addWidget(label5, 2, 2);
    
    window->setLayout(layout);
    window->show();
    return app.exec();
}
您也可以使用setColumnMinimumWidth()來設定指定行的最小寬度,或使用setRowMinimumHeight()來設定指定列的最小高度,行列的索引都是由0開始,與二維陣列的指定方式相同。
程式的執行畫面如下所示:

利用指定行列置放元件的特性,您就可以進行如下的畫面設計:

(圖片取自Qt官方的 QGridLayout 類別說明)

