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:
.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