Qt有两种组件的定位方式,绝对定位和布局定位。
绝对定位是设置坐标和长宽的值,但是改变窗口时组件不会有任何的变化,因此我们需要布局管理器。
示例代码:
#include "mainwindow.h"
#include <QApplication>
#include <QSpinBox>
#include <QSlider>
#include <QHBoxLayout> //水平方向布局
#include <QVBoxLayout> //竖直方向布局
//将组件放入某一种布局,调整大小时程序自己会进行调整
//两个新组件:QSpinBox和QSlider
//QSpinBox是只能输入数字的输入框并且带有上下箭头 QSlider是带有滑块的滑杆
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget window;
window.setWindowTitle("Enter your age");
QSpinBox *spinBox = new QSpinBox(&window);
QSlider *slider = new QSlider(Qt::Horizontal, &window);
spinBox->setRange(0, 130); //两个参数应该一致
slider->setRange(0, 130);
QObject::connect(slider, &QSlider::valueChanged, spinBox, &QSpinBox::setValue);
//创建一个函数指针,因为valueChanged是一个重载函数
void (QSpinBox:: *spinBoxSignal)(int) = &QSpinBox::valueChanged;
QObject::connect(spinBox, spinBoxSignal, slider, &QSlider::setValue);
spinBox -> setValue(35); //输入框的初始值
//创建布局管理器,将两个组件加入其中
QVBoxLayout *layout = new QVBoxLayout;
layout -> addWidget(spinBox);
layout -> addWidget(slider);
window.setLayout(layout);
window.show();
return app.exec();
}
新内容:
QSpinBox
QSlider
QVBoxLayout(类似还有QHBoxLayout QGridLayout QFormLayout等)
复习了connect函数,注意SpinBox