// 稍微複雜點的佈局

#include <QApplication>

#include <QFont>

#include <QGridLayout>

#include <QLCDNumber>

#include <QPushButton>

#include <QSlider>

#include <QVBoxLayout>

#include <QWidget>
//LCDRange類
class LCDRange :
public QWidget

{
public:

LCDRange(QWidget *parent = 0);

};

LCDRange::LCDRange(QWidget *parent)

: QWidget(parent)

{
//LCD數字

QLCDNumber *lcd =
new QLCDNumber(2);

lcd->setSegmentStyle(QLCDNumber::Flat);
//Slider

QSlider *slider =
new QSlider(Qt::Horizontal);

slider->setRange(0, 99);

slider->setValue(0);

connect(slider, SIGNAL(valueChanged(
int)),lcd, SLOT(display(
int)));
//佈局

QVBoxLayout *layout =
new QVBoxLayout;

layout->addWidget(lcd);

layout->addWidget(slider);

setLayout(layout);

}
class MyWidget :
public QWidget

{
public:

MyWidget(QWidget *parent = 0);

};
//MyWidget類

MyWidget::MyWidget(QWidget *parent)

: QWidget(parent)

{
//建立quit按鈕

QPushButton *quit =
new QPushButton(tr(
"Quit"));

quit->setFont(QFont(
"Times", 18, QFont::Bold));

connect(quit, SIGNAL(clicked()), qApp, SLOT(quit()));
//網格佈局

QGridLayout *grid =
new QGridLayout;
for (
int row = 0; row < 3; ++row) {
for (
int column = 0; column < 3; ++column) {

LCDRange *lcdRange =
new LCDRange;
//建立LCD+Slider

grid->addWidget(lcdRange, row, column);

}

}

QVBoxLayout *layout =
new QVBoxLayout;

layout->addWidget(quit);

layout->addLayout(grid);
//子佈局

setLayout(layout);
//設置佈局

}
int main(
int argc,
char *argv[])

{

QApplication app(argc, argv);
//建立MyWidget的一個實例

MyWidget widget;

widget.show();
return app.exec();

}