// 稍微複雜點的佈局
#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();
}