#include #include #include #include #include #include const int COL_SIZE = 10; const int ROW_SIZE = 20; void CreateGrid(QMainWindow* mainWindow) { int columnCount = 12; int rowCount = 5; mainWindow->setWindowTitle("Test Grid"); // resizing mainWindow to at most its desired size ( mainWindow->resize(columnCount * COL_SIZE, rowCount * ROW_SIZE); QWidget* container = new QWidget(mainWindow); container->resize(columnCount * COL_SIZE, rowCount * ROW_SIZE); QGridLayout* gridLayout = new QGridLayout(container); gridLayout->setHorizontalSpacing(0); gridLayout->setVerticalSpacing(0); for (int c = 0; c < columnCount; ++c) { gridLayout->setColumnMinimumWidth(c, COL_SIZE); gridLayout->setColumnStretch(c, 0); } for (int r = 0; r < rowCount; ++r) { gridLayout->setRowMinimumHeight(r, ROW_SIZE); gridLayout->setRowStretch(r, 0); } // Add an outer row/column that can resize freely gridLayout->setColumnMinimumWidth(columnCount, 0); gridLayout->setColumnStretch(columnCount, 1); gridLayout->setRowMinimumHeight(rowCount, 0); gridLayout->setRowStretch(rowCount, 1); QPalette odd, even; odd.setColor(QPalette::Background, Qt::black); even.setColor(QPalette::Background, Qt::white); for (int c = 0; c < columnCount; ++c) { QWidget* square = new QWidget(container); square->setAutoFillBackground(true); square->setPalette((c + rowCount - 1) % 2 ? odd : even); gridLayout->addWidget(square, rowCount - 1, c); } for (int r = 0; r < rowCount; ++r) { QWidget* square = new QWidget(container); square->setAutoFillBackground(true); square->setPalette((columnCount - 1 + r) % 2 ? odd : even); gridLayout->addWidget(square, r, columnCount - 1); } QLabel* field1 = new QLabel("somelabel", container); gridLayout->addWidget(field1, 0, 3, 1, 5); QLabel* field2 = new QLabel("label", container); gridLayout->addWidget(field2, 1, 0, 1, 3); QLineEdit* field3 = new QLineEdit("somelabel", container); gridLayout->addWidget(field3, 1, 4, 1, 6); QLabel* field4 = new QLabel("label", container); gridLayout->addWidget(field4, 2, 0, 1, 3); QPalette palette1; palette1.setColor(QPalette::Background, Qt::yellow); field1->setAutoFillBackground(true); field1->setPalette(palette1); QPalette palette2; palette2.setColor(QPalette::Background, Qt::red); field2->setAutoFillBackground(true); field2->setPalette(palette2); QPalette palette3; palette3.setColor(QPalette::Background, Qt::blue); field3->setAutoFillBackground(true); field3->setPalette(palette3); QPalette palette4; palette4.setColor(QPalette::Background, Qt::green); field4->setAutoFillBackground(true); field4->setPalette(palette4); mainWindow->setCentralWidget(container); } int main(int argc, char** argv) { QApplication a(argc, argv); QMainWindow mainWindow; CreateGrid(&mainWindow); mainWindow.show(); return a.exec(); }