简介
QSpinBox允许用户通过单击向上/向下按钮或按键盘上的向上/向下来增加/减少当前显示的值来调节一个值。用户也可以手动输入值。整形使用QSpinBox,浮点值使用QDoubleSpinBox。
常用Api
设置最小值
void setMinimum()
设置最大值
void setMaximum();
设置当前值
void setValue();
设置精度
void setDecimals()
设置步距
void setSingleStep();
设置前缀
void setSuffix();
设置后缀
void setPrefix()
数值改变信号
void valueChanged(int i)
void valueChanged(const QString &text)
注意信号valueChanged在这个类中被重载。QT5新版的信号槽语法要使用函数指针语法连接到这个信号,需要使用static_cast转换指针,如下例所示:
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){
/* ... */
});
示例效果:
.h文件
#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布局