// SmallWidget.h
#ifndef SMALLWIDGET_H
#define SMALLWIDGET_H
#include <QWidget>
namespace Ui {
class SmallWidget;
}
class SmallWidget : public QWidget
{
    Q_OBJECT
public:
    explicit SmallWidget(QWidget *parent = 0);
    void setNumberValue(int value);
    int getNumber();
    ~SmallWidget();
private:
    Ui::SmallWidget *ui;
};
#endif // SMALLWIDGET_H
 
// 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:: *spinBoxValueChangeFuncPointer)(int) = &QSpinBox::valueChanged;
    void(QSlider:: *sliderSetValueFuncPointer)(int) = &QSlider::setValue;
    connect(this->ui->spinBox, spinBoxValueChangeFuncPointer, this->ui->horizontalSlider, sliderSetValueFuncPointer);
    // QSlider移动, QSpinBox跟着移动
    void(QSlider:: *sliderValueChangeFuncPointer)(int) = &QSlider::valueChanged;
    void(QSpinBox:: *spinBoxSetValueFuncPointer)(int) = &QSpinBox::setValue;
    connect(this->ui->horizontalSlider, sliderValueChangeFuncPointer, this->ui->spinBox, spinBoxSetValueFuncPointer);
}
void SmallWidget::setNumberValue(int value) {
    this->ui->spinBox->setValue(value);
}
int SmallWidget::getNumber() {
    return this->ui->spinBox->value();
}
SmallWidget::~SmallWidget()
{
    delete ui;
}
 
// Widget.cpp
#include "Widget.h"
#include "ui_Widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    int value = -1;
    // multable关键字用来改外部值
    connect(this->ui->getValueButton, QPushButton::clicked, this->ui->myWidget, [=]() mutable {
         value = this->ui->myWidget->getNumber();
         qDebug() << value;
    });
    connect(this->ui->halfButton, QPushButton::clicked, this->ui->myWidget, [=](){
          this->ui->myWidget->setNumberValue(50);
    });
}
Widget::~Widget()
{
    delete ui;
}