|  | #include <QApplication>
 | 
  
    |  | #include <QGridLayout>
 | 
  
    |  | #include <QLabel>
 | 
  
    |  | #include <QLineEdit>
 | 
  
    |  | #include <QMainWindow>
 | 
  
    |  | #include <QPalette>
 | 
  
    |  | 
 | 
  
    |  | 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();
 | 
  
    |  | }
 |