Qt将两个组件封装成一个组件(自定义接口函数)

本文详细介绍了如何在Qt环境中将QSpinBox和QSlider组件进行封装,实现两者之间的双向联动效果。通过连接信号和槽,使得QSpinBox的值变化时QSlider的滑块位置同步更新,反之亦然。此外,还提供了设置和获取值的接口,方便在实际应用中使用。最后展示了具体的效果演示和代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

将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;
}

效果演示

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

讳疾忌医丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值