QT 自定义控件 label提升为类

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 运行


版权声明:本文为moonlightpeng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>