用布局layout来管理窗口中窗口部件的几何形状,如何利用信号来同步窗口部件
当创建一个需要放进某个布局中的窗口部件时,就没有必要为其显式地指定父对象了。
- Qt三个主要的布局管理器
- QHBoxLayout。在水平方向上排列窗口部件,从左到右(或从右到左)。
- QVBoxLayout。在竖直方向上排列窗口部件,从上到下。
- QGridLayout。把各个窗口部件排列在一个网格中。
TEMPLATE = app
SOURCES = \
age.cpp
QT += core gui widgets
- age.cpp
#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)));
//调用2次QObject::connect,确保微调框和滑块同步,显示相同的数值
spinBox->setValue(35); //初始值
QHBoxLayout *layout = new QHBoxLayout;//布局管理器进行布局处理
layout->addWidget(spinBox);
layout->addWidget(slider);
window->setLayout(layout);//窗口上安装布局管理器
window->show();
return app.exec();
}
- 运行