Qt 自定义控件

 学过的东西很久不用都已经忘记了,即使是很简单的事情

1、添加一个Qt 设计师界面类

Qt 自定义控件_第1张图片

 Qt 自定义控件_第2张图片

 如何将这个放到比较好看并且是居中的呢?

布局--》水平-》竖直 

点击大的widget 不是这两个控件

Qt 自定义控件_第3张图片

 Qt 自定义控件_第4张图片

 2、在主窗口中添加一个widget 来加载上面我们已经拿到组合控件

Qt 自定义控件_第5张图片

 3、将这个widget提升为Qt 自定义控件_第6张图片

 Qt 自定义控件_第7张图片

 之后了我们验证一下这个是不是成功,直接运行程序:

Qt 自定义控件_第8张图片

 如果出现这样就说明加载成功这个自定义控件了

4、我们需要让这个自定义控件来实现相互显示;

    // 设计  数字改变的时候  滑动块移动到对应的位置
    void(QSpinBox:: * singlespinBox)(int)=&QSpinBox::valueChanged;
    connect(ui->sBox,singlespinBox,ui->horizontalSlider,&QSlider::setValue);

测试一下:Qt 自定义控件_第9张图片

 5、获得slider 上面的值

   // 数字随着slider 的滑动而改变数值
    connect(ui->horizontalSlider,&QSlider::valueChanged,ui->sBox,&QSpinBox::setValue);

测试一下:

Qt 自定义控件_第10张图片

 6、我们需要在主窗口分别设置get 和set 的功能

在smallwidget 中写两个函数

#ifndef SMALLWIDGET_H
#define SMALLWIDGET_H

#include 

namespace Ui {
class smallwidget;
}

class smallwidget : public QWidget
{
    Q_OBJECT

public:
    explicit smallwidget(QWidget *parent = nullptr);
    ~smallwidget();
    
    int  getNumber();
    void setNUber();

private:
    Ui::smallwidget *ui;
};

#endif // SMALLWIDGET_H

Qt 自定义控件_第11张图片

 Qt 自定义控件_第12张图片

 代码:

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

smallwidget::smallwidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::smallwidget)
{
    ui->setupUi(this);
    // 设计  数字改变的时候  滑动块移动到对应的位置
    void(QSpinBox:: * singlespinBox)(int)=&QSpinBox::valueChanged;
    connect(ui->sBox,singlespinBox,ui->horizontalSlider,&QSlider::setValue);


    // 数字随着slider 的滑动而改变数值
    connect(ui->horizontalSlider,&QSlider::valueChanged,ui->sBox,&QSpinBox::setValue);
}

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

int smallwidget::getNumber()
{
    return ui->sBox->value();
}

void smallwidget::setNUber(int num)
{
    ui->sBox->setValue(num);
}
Widget
#include "widget.h"
#include "ui_widget.h"
#include
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

     //获得功能
    connect(ui->getBtn,&QPushButton::clicked,[=](){
        qDebug()<< ui->mywidget->getNumber();
    });

    connect(ui->setBtn,&QPushButton::clicked,[=](){
       ui->mywidget->setNUber(23);
    });
}

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

你可能感兴趣的:(QT,C++,qt,开发语言)