【QT】13 自定义控件

   代码资源:https://download.csdn.net/download/qq_36926037/85045644

13.1 项目创建

   创建项目详细过程步骤:https://blog.csdn.net/qq_36926037/article/details/123720720
在这里插入图片描述

13.2 自定义控件封装

13.2.1 步骤1:新建自定义控件(包含.cpp/.h/.ui文件)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

13.2.2 步骤2: 自定义控件界面设计

  (1)打开自定义控件类的ui界面文件
  (2)在自定义控件类的ui界面文件中,添加需要封装的控件
在这里插入图片描述
  (3)自定义控件类的ui界面的调整
在这里插入图片描述

13.2.3 步骤3: 自定义控件使用

  (1)查看自定义控件所属的类(父类为QWidget)
在这里插入图片描述

  (2)打开主的ui界面文件
在这里插入图片描述
  (3)在主界面文件中,添加自定义控件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

13.2.4 步骤4: 自定义控件功能设计

  (1)找到自定义控件类,的源文件smallwidget.cpp
  (2)绑定SpinBox控件和>horizontalSlider控件

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

SmallWidget::SmallWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::SmallWidget)
{
    ui->setupUi(this);
    //(1)绑定spin box 和vertical slider:实现改变Spin box值,horizontalSlider自动滑动
    void(QSpinBox::*spSignal)(int)=&QSpinBox::valueChanged;//使用重载的信号地址
    connect(ui->spinBox,spSignal,  ui->horizontalSlider,&QSlider::setValue);

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

在这里插入图片描述

  //(2)绑定horizontalSlider和spin box,实现移动horizontalSlider,spin box数值改变
    connect(ui->horizontalSlider,&QSlider::valueChanged,ui->spinBox,&QSpinBox::setValue);

在这里插入图片描述

  (3)获取Spinbox控件内的值,设置spinBox控件的值。

#ifndef SMALLWIDGET_H
#define SMALLWIDGET_H

#include <QWidget>

namespace Ui {
class SmallWidget;
}

class SmallWidget : public QWidget
{
    Q_OBJECT

public:
    explicit SmallWidget(QWidget *parent = nullptr);
    ~SmallWidget();
    
    //设置值
    void setNum(int num);
    //获取值
    int getNum();
    

private:
    Ui::SmallWidget *ui;
};

#endif // SMALLWIDGET_H

在这里插入图片描述

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

SmallWidget::SmallWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::SmallWidget)
{
    ui->setupUi(this);
    //(1)绑定spin box 和horizontalSlider
    void(QSpinBox::*spSignal)(int)=&QSpinBox::valueChanged;//使用重载的信号地址
    connect(ui->spinBox,spSignal,  ui->horizontalSlider,&QSlider::setValue);

    //(2)绑定horizontalSlider和spin box实现,移动horizontalSlider,spin box数值改变
    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;
}

在这里插入图片描述
在这里插入图片描述

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //(1)获取当前空间内的值
    connect(ui->pushButton,&QPushButton::clicked,[=]()
    {
        qDebug()<<ui->widget->getNum();

    });

    //(2)设置控件内的值为一半
    connect(ui->pushButton2,&QPushButton::clicked,[=]()
    {
        ui->widget->setNum(5);

    });
}

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

在这里插入图片描述

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值