布局管理器就是一个能够对其所负责窗口部件的尺寸大小和位置进行设置的对象,下面看一个常见的例子:
#include <QApplication>
#include <QHBoxLayout>
#include <QSlider>
#include <QSpinBox>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget *window = new QWidget;
window->setWindowTitle("Enter Your Age");
QSpinBox *spinBox = new QSpinBox;
QSlider *slider = new QSlider(Qt::Horizontal);
spinBox->setRange(0, 130);
slider->setRange(0, 130);
QObject::connect(spinBox, SIGNAL(valueChanged(int)),
slider, SLOT(setValue(int)));
QObject::connect(slider, SIGNAL(valueChanged(int)),
spinBox, SLOT(setValue(int)));
spinBox->setValue(35);
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(spinBox);
layout->addWidget(slider);
window->setLayout(layout);
window->show();
return app.exec();
}
不知道大家有没有注意到QSpinBox *spinBox = new QSpinBox;和QSlider *slider = new QSlider(Qt::Horizontal);这两句话都没有指明父对象,其实这里是安装了布局管理器,从软件的底层是想上来说,QSpinBox和QSlider会自动“重定义父对象,它们会成为这个安装了布局的窗口部件的子对象。也是这个原因,当创建一个需要放进某个布局中的窗口部件时,就没有必要为其显式地指明父对象了。