0
点赞
收藏
分享

微信扫一扫

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

大南瓜鸭 2022-05-06 阅读 65
// 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;
}
举报

相关推荐

0 条评论