量化交易之QT篇 - 自定义控件(lamda表达式、multable关键字)

// 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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值