前言
将QSpinBox 和 QSlider 封装成一个组件使用
QSpinBox 移动QSlider跟着移动
QSlider移动 QSpinBox跟着改变
效果:
第一步:界面初始化
1, 添加新文件->Qt->Qt设计师界面类
2,选择widget 下一步
3,取一个名字, 下一步
4,在刚才新建的文件ui后缀文件中进行组件构造,拖入一个SpinBox 和Horizontal Slider 组件然后点击水平布局,然后把主界面调整成你觉得合适的大小
第二步:代码
#include "small.h"
#include "ui_small.h"
small::small(QWidget *parent) :
QWidget(parent),
ui(new Ui::small)
{
ui->setupUi(this);
// QSpinBox 移动QSlider跟着移动
void(QSpinBox::*spinSignal)(int) = &QSpinBox::valueChanged;
connect(ui->spinBox,spinSignal,ui->horizontalSlider,&QSlider::setValue);
// QSlider移动 QSpinBox跟着改变
connect(ui->horizontalSlider,&QSlider::valueChanged,ui->spinBox,&QSpinBox::setValue);
}
small::~small()
{
delete ui;
}
第三步:使用
1,widget.ui中使用:先拖入一个widget(容器),然后右键提示为 填写完之后添加就ok了
第四步:启动
拓展:接口编写
1,对封装的组件,接口编写,添加两个按钮用来获取值和设置值
small.cpp文件
#include "small.h"
#include "ui_small.h"
small::small(QWidget *parent) :
QWidget(parent),
ui(new Ui::small)
{
ui->setupUi(this);
// QSpinBox 移动QSlider跟着移动
void(QSpinBox::*spinSignal)(int) = &QSpinBox::valueChanged;
connect(ui->spinBox,spinSignal,ui->horizontalSlider,&QSlider::setValue);
// QSlider移动 QSpinBox跟着改变
connect(ui->horizontalSlider,&QSlider::valueChanged,ui->spinBox,&QSpinBox::setValue);
}
// 自定义接口
void small::setData(int value)
{
ui->spinBox->setValue(value);
}
int small::getData()
{
return ui->spinBox->value();
}
small::~small()
{
delete ui;
}
small.h文件
#ifndef SMALL_H
#define SMALL_H
#include <QWidget>
namespace Ui {
class small;
}
class small : public QWidget
{
Q_OBJECT
public:
explicit small(QWidget *parent = 0);
~small();
void setData(int value); // 设置值
int getData(); // 获取值
private:
Ui::small *ui;
};
#endif // SMALL_H
widget.h文件,链接两个按钮的点击事件,使用接口函数操作
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
// 设置按钮
connect(ui->btn_set,&QPushButton::clicked,[=]()
{
ui->widget->setData(50);
});
// 获取按钮
connect(ui->btn_get,&QPushButton::clicked,[=]()
{
qDebug()<<ui->widget->getData();
});
}
Widget::~Widget()
{
delete ui;
}