QSpinBox use explanation

Introduction

QSpinBox allows the user to adjust a value by clicking the up/down buttons or pressing up/down on the keyboard to increase/decrease the currently displayed value. Users can also enter values ​​manually. Use QSpinBox for integers and QDoubleSpinBox for floating point values.

Common APIs

set minimum value

void setMinimum()

set maximum value

void setMaximum();

set current value

void setValue();

set precision

  void setDecimals()

set step

void setSingleStep();

set prefix

void setSuffix();

set suffix

 void setPrefix()

value change signal

void valueChanged(int i)
void valueChanged(const QString &text)

Note that the signal valueChanged is overloaded in this class. To connect to this signal using function pointer syntax, you need to cast the pointer using static_cast, as shown in the following example:

    connect(ui->spinBox, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged),
        [=](int i){
    
    
		/* ... */ 
        });

   connect(ui->doubleSpinBox, static_cast<void(QDoubleSpinBox::*)(const QString &)>(&QDoubleSpinBox::valueChanged),
        [=](const QString &text){
    
    
       /* ... */ 
       });

Example effect:

insert image description here
.h file

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
    
    
class Widget;
}

class Widget : public QWidget
{
    
    
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

.cpp

#include "widget.h"
#include "ui_widget.h"

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


    //设置后缀
     ui->spinBox->setPrefix(QStringLiteral("$"));
     //设置最小值
     ui->spinBox->setMinimum(0);
     //设置最大值
     ui->spinBox->setMaximum(1000);
     //设置当前值
     ui->spinBox->setValue(40);
     //设置步距
     ui->spinBox->setSingleStep(1);

     //设置前缀
     ui->doubleSpinBox->setSuffix(QStringLiteral("℃"));
     //设置最小值
     ui->doubleSpinBox->setMinimum(-100);
     //设置最大值
     ui->doubleSpinBox->setMaximum(50);
     //设置当前值
     ui->doubleSpinBox->setValue(26.7);
     //设置步距
     ui->doubleSpinBox->setSingleStep(0.1);
     //设置精度
     ui->doubleSpinBox->setDecimals(2);



    connect(ui->spinBox, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged),
        [=](int i){
    
    
        QString str = QString("QSpinBox value changed:%1").arg(i);
        ui->textEdit->append(str);
        });

   connect(ui->doubleSpinBox, static_cast<void(QDoubleSpinBox::*)(const QString &)>(&QDoubleSpinBox::valueChanged),
        [=](const QString &text){
    
    
       QString str = QString("QDoubleSpinBox value changed:%1").arg(text);
       ui->textEdit->append(str);
       });
}

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

UI layout
insert image description here

Guess you like

Origin blog.csdn.net/weixin_44901043/article/details/123747173