• Qt学习总结之QSpinBox


    一.描述

    QSpinBox是一个主要处理整数和离散值集合的步长调节器控件,它允许用户通过单击增减按钮或用键盘输入值来实现当前显示值的改变。它主要显示整数,也可以通过自定义显示一些离散的值集(周一~周日)

    QSpinBox继承了QAbstractSpinBox,可以使用父类的各种API。

    二.功能

    1.构造函数
    创建控件

    m_box = new QSpinBox(this);
    m_box->setGeometry(100,100,200,50);
    
    • 1
    • 2

    2.最大值和最小值

    m_box->setMaximum(20);      //设定最大值
    m_box->setMinimum(5);       //设定最小值
    int v_max = m_box->maximum();   //获取最大值
    int v_min = m_box->minimum();   //获取最小值
    
    • 1
    • 2
    • 3
    • 4

    3.数值循环

    可以通过设置数值循环,在数据到最大值时可以直接转到最小值(反之也可以)

    m_box->setWrapping(true);
    
    • 1

    4.步长设置
    设定好步长每次加减的数值按设定值操作。

    m_box->setSingleStep(2);                //设置步长
    int v_step = m_box->singleStep();       //获取步长
    
    • 1
    • 2

    5.前缀和后缀和最小值特殊文本
    加了前缀或后缀只改变数值,前后缀不变化

    m_box->setPrefix("¥");          //设置前缀
    m_box1->setSuffix("元");         //设置后缀
    
    • 1
    • 2

    在这里插入图片描述
    6.进制更改

    这里设置的进制是不光常用的二进制、八进制和十进制的,任何一个整数是都可以的(还可以大于16,不过实际没什么意义,0-F后可以继续)

    m_box->setDisplayIntegerBase(16);	//设置十六进制
    
    • 1

    7.数值的设置和获取
    这里用的value获取的是int对应的值,不包含前后缀,最小值时不对应特殊文本

    m_box->setValue(15);						//设置值
    int v_val = m_box->value();				//读取值 
    
    • 1
    • 2

    三.信号

    除了继承父类的

    QSpinBox::editingFinished()
    
    • 1

    结束编辑信号外,它还带有另外一种信号

    QSpinBox::valueChanged()
    
    • 1

    它传递有int类型的信号,还可以重构一下发送字符串类型的数据

    QSpinBox::valueChanged[str]() 
    
    • 1

    发送字符串时是按照当前显示的状态发送的,包含有前后缀以及自定义的显示类型。

    源码:

    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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
  • 相关阅读:
    三维全景融合拼接技术
    Flink RoaringBitmap去重
    密码字典生成工具pydictor/john
    【微机接口】第七章:输入输出端口
    LSTM基础
    JAVA12_05学习总结(JDBC!)
    【912.排序数组】
    Cesium 空间量算——生成点位坐标
    树莓派读取gps neo6m信息
    利用ChatGPT练习口语
  • 原文地址:https://blog.csdn.net/qq_27726087/article/details/126464363