QSpinBox是一个主要处理整数和离散值集合的步长调节器控件,它允许用户通过单击增减按钮或用键盘输入值来实现当前显示值的改变。它主要显示整数,也可以通过自定义显示一些离散的值集(周一~周日)
QSpinBox继承了QAbstractSpinBox,可以使用父类的各种API。
1.构造函数
创建控件
m_box = new QSpinBox(this);
m_box->setGeometry(100,100,200,50);
2.最大值和最小值
m_box->setMaximum(20); //设定最大值
m_box->setMinimum(5); //设定最小值
int v_max = m_box->maximum(); //获取最大值
int v_min = m_box->minimum(); //获取最小值
3.数值循环
可以通过设置数值循环,在数据到最大值时可以直接转到最小值(反之也可以)
m_box->setWrapping(true);
4.步长设置
设定好步长每次加减的数值按设定值操作。
m_box->setSingleStep(2); //设置步长
int v_step = m_box->singleStep(); //获取步长
5.前缀和后缀和最小值特殊文本
加了前缀或后缀只改变数值,前后缀不变化
m_box->setPrefix("¥"); //设置前缀
m_box1->setSuffix("元"); //设置后缀

6.进制更改
这里设置的进制是不光常用的二进制、八进制和十进制的,任何一个整数是都可以的(还可以大于16,不过实际没什么意义,0-F后可以继续)
m_box->setDisplayIntegerBase(16); //设置十六进制
7.数值的设置和获取
这里用的value获取的是int对应的值,不包含前后缀,最小值时不对应特殊文本
m_box->setValue(15); //设置值
int v_val = m_box->value(); //读取值
除了继承父类的
QSpinBox::editingFinished()
结束编辑信号外,它还带有另外一种信号
QSpinBox::valueChanged()
它传递有int类型的信号,还可以重构一下发送字符串类型的数据
QSpinBox::valueChanged[str]()
发送字符串时是按照当前显示的状态发送的,包含有前后缀以及自定义的显示类型。
源码:
mainwindow.c
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->resize(800,600);
m_box = new QSpinBox(this);
m_box1 = new QSpinBox(this);
m_box->setGeometry(100,100,200,50);
m_box1->setGeometry(100,200,200,50);
m_box->setMaximum(20); //设定最大值
m_box->setMinimum(5); //设定最小值
int v_max = m_box->maximum(); //获取最大值
int v_min = m_box->minimum(); //获取最小值
v_max++;
v_min++;
m_box->setWrapping(true);
m_box->setSingleStep(2); //设置步长
int v_step = m_box->singleStep(); //获取步长
v_step++;
// m_box->setPrefix("¥"); //设置前缀
// m_box1->setSuffix("元"); //设置后缀
m_box->setDisplayIntegerBase(16);
m_box->setValue(15);
int v_val = m_box->value();
}
MainWindow::~MainWindow()
{
delete ui;
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
#include
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
QSpinBox *m_box;
QSpinBox *m_box1;
};
#endif // MAINWINDOW_H