Qt学习9——自定义控件的封装_spinBox和horizontalSlider

自定义控件如下图:拉动右侧的horizontalSlider左侧的spinBox也根之改变最大值为100,改变spinBox里面的数值,horizontalSlider也跟着改变,点击获取当前值,程序打印出spinBox里面的值,点击设置到一半,spinBox变到50,相应horizontalSlider也变化到中间位置
在这里插入图片描述

新建一个设计师界面
在这里插入图片描述
首先布局ui
这个是horizontalSlider和spinBox的布局
在这里插入图片描述
在这里插入图片描述
这个是窗口界面的简单布局,选中的是一个widget,到时候smallwidget里面的ui要放到这个里面
在这里插入图片描述
怎么把smallwidget放到widget里面呢
在这里插入图片描述
右键点击提升为
在这里插入图片描述
把smallwidget放入里面即可,然后添加即可
在smallwidget里面写一个全局函数,以供接下来去调用
在这里插入图片描述
然后在smallwidget.cpp里面添加联动的效果

#include "smallwidget.h"
#include "ui_smallwidget.h"

SmallWidget::SmallWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::SmallWidget)
{
    ui->setupUi(this);
    //QspinBox数字改变 QSlider也跟着滑动
    void(QSpinBox:: * spSignal)(int)=&QSpinBox::valueChanged;
    connect(ui->spinBox,spSignal,ui->horizontalSlider,&QSlider::setValue);
    //QSlider滑动 QspinBox数字随之改变
    connect(ui->horizontalSlider,&QSlider::valueChanged,ui->spinBox,&QSpinBox::setValue);
}
void SmallWidget:: setNum(int num)
{
    ui->spinBox->setValue(num);
}
int SmallWidget:: getNum()
{
    return ui->spinBox->value();
}

SmallWidget::~SmallWidget()
{
    delete ui;
}

在widget里面添加按钮的控制程序

#include "widget.h"
#include "ui_widget.h"
#include "QPushButton"
#include "QDebug"
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    connect(ui->btn_get,&QPushButton::clicked,[=](){
        qDebug()<<ui->widget->getNum();
    });
    connect(ui->btn_set,&QPushButton::clicked,[=](){
        ui->widget->setNum(50);
    });
}

Widget::~Widget()
{
    delete ui;
}


OK,这就完啦!

猜你喜欢

转载自blog.csdn.net/qq_45156021/article/details/109184380