通过类实现简单的布局,可以做为一种方法来学习。
#include <QApplication.h>
#include <qmainwindow.h>
#include <qpushbutton.h>
#include <qslider.h>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <qwidget.h>
#include <QLCDNumber>
class MyWidget:public QWidget
{
public:
MyWidget(QWidget *parent=0,const char *name=0);
};
MyWidget::MyWidget(QWidget *parent, const char *name)
:QWidget(parent)
{
//创建单个一个lcd一个slider并做关联
QLCDNumber *lcd=new QLCDNumber(2);
QSlider *slider=new QSlider(Qt::Horizontal,this);
slider->setRange(0,99);
slider->setValue(0);
//用了信号/槽机制把滑块的valueChanged()信号和LCD数字的display()槽连接起来
connect(slider,SIGNAL(valueChanged(int)),lcd,SLOT(display(int)));
QVBoxLayout *layout=new QVBoxLayout;
layout->addWidget(lcd);
layout->addWidget(slider);
setLayout(layout);
}
class MyWidget1:public QWidget
{
public:
MyWidget1(QWidget *parent=0);
};
MyWidget1::MyWidget1(QWidget *parent)
:QWidget(parent)
{
//水平布局,创建一行4个MyWidget对象
QHBoxLayout *layout=new QHBoxLayout;
MyWidget *m[4];
for(int j=0;j<4;j++)
{
m[j]=new MyWidget;
}
for(int i=0;i<4;i++)
{
layout->addWidget(m[i]);
}
setLayout(layout);
}
class MyWidget2:public QWidget
{
public:
MyWidget2(QWidget *parent=0);
};
MyWidget2::MyWidget2(QWidget *parent)
:QWidget(parent)
{
//这个类是垂直布局,创建一列上面类中的一行
QVBoxLayout *layout=new QVBoxLayout;
MyWidget1 *m[4];
QPushButton *bn=new QPushButton("Quit",this);
QObject::connect(bn,SIGNAL(clicked()),qApp,SLOT(quit()));
layout->addWidget(bn);
for(int j=0;j<4;j++)
{
m[j]=new MyWidget1;
}
for(int i=0;i<4;i++)
{
layout->addWidget(m[i]);
setLayout(layout);
}
}
int main(int argc,char **argv)
{
QApplication a(argc,argv);
//类对象
MyWidget2 w;
w.show();
return a.exec();
}

被折叠的 条评论
为什么被折叠?



