QT 自定义控件 label提升为类

本文详细介绍了如何在Qt中创建一个新的Widget应用,包括添加自定义控件、UI界面的交互设计,如QSpinBox和QSlider的双向联动,以及通过按钮操作获取和修改值。最后展示了如何将组件提升为类并关联button事件。
摘要由CSDN通过智能技术生成

1 新建 QT widget application

 2 添加 

3 上一步生成的ui界面创建自定义控件

4, 在第1步的ui界面中加一个 Widget

5,提升为类

 提升的基类为第二步生成的类

Form::Form(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Form)
{
    ui->setupUi(this);
    void (QSpinBox::* spinSignal)(int) = &QSpinBox::valueChanged;
    connect(ui->spinBox, spinSignal,ui->horizontalSlider, &QSlider::setValue);

//    void (QSlider::* sliderSignal)(int) = &QSlider::valueChanged;
//    connect(ui->horizontalSlider, sliderSignal,ui->spinBox, &QSpinBox::setValue);

        connect(ui->horizontalSlider, &QSlider::valueChanged,ui->spinBox, &QSpinBox::setValue);
}

6,用button获取或修改值

在第1步的ui界面中加两个button

 7 修改程序 主要实现getData和setData两个函数

#ifndef FORM_H
#define FORM_H

#include <QWidget>

namespace Ui {
class Form;
}

class Form : public QWidget
{
    Q_OBJECT

public:
    explicit Form(QWidget *parent = nullptr);
    ~Form();


    void setDate( int value);
    int getDate();

private:
    Ui::Form *ui;
};

#endif // FORM_H
#include "form.h"
#include "ui_form.h"

Form::Form(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Form)
{
    ui->setupUi(this);
    void (QSpinBox::* spinSignal)(int) = &QSpinBox::valueChanged;
    connect(ui->spinBox, spinSignal,ui->horizontalSlider, &QSlider::setValue);

//    void (QSlider::* sliderSignal)(int) = &QSlider::valueChanged;
//    connect(ui->horizontalSlider, sliderSignal,ui->spinBox, &QSpinBox::setValue);

        connect(ui->horizontalSlider, &QSlider::valueChanged,ui->spinBox, &QSpinBox::setValue);
}



void Form::setDate( int value)
{
   ui->spinBox->setValue(value);
}
int Form::getDate(){

    return ui->spinBox->value();

}

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

关联button

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

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    connect(ui->pushButton, &QPushButton::clicked, [=](){
        ui->widget->getDate();
        qDebug()<< ui->widget->getDate() << endl;
    });

    connect(ui->pushButton_2, &QPushButton::clicked, [=](){
        ui->widget->setDate(50);
    });
}



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

8 运行

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值