SpinBox

 

类别 名称 数据类型 说明
🔧 核心属性 value int 控件的当前值
  minimum ,  ma  ximum int 允许的最小值和最大值
  singleStep int 点击按钮一次的步长值
  prefix ,  su  ffix QString 显示在数值前/后的字符串(如"¥", "cm")
  wrapping bool 是否循环(达到最大值后继续增加会跳转到最小值)
  specialValueText QString 当值等于最小值时显示的特殊文本(如"Off")
  displayIntegerBase int 数值显示的进制基数(如2为二进制,16为十六进制)
  readOnly bool 设置控件是否为只读,用户无法键盘输入但可通过按钮调整
📢 常用信号 valueChanged(int) - 最常,数值改变时发射,带当前整数值
  textChanged(const QSt  ring &) - 数值改变时发射,带完整的文本(包括前后缀)

 

获取数值

 //获取数值
 int inputValue = ui.spinBox->value();

 设置最大最小值

 //设置最大最小值
 // 
 //设置最大值
 ui.spinBox->setMaximum(1000);
 //设置最小值
 ui.spinBox->setMinimum(-2000);

 

//设置最大最小值,第一个参数是最小值,第二个参数是最大值
ui.spinBox->setRange(200, 600);

设置值

    //设置值
    ui.spinBox->setValue(255);

设置进制

    //设置进制

    //设置二进制
    ui.spinBox->setDisplayIntegerBase(2);
    //设置十六进制
    ui.spinBox->setDisplayIntegerBase(16);

设置前缀后缀

    //设置前缀后缀

    //设置前缀
    ui.spinBox->setPrefix("$");
    //设置后缀
    ui.spinBox->setSuffix("#");

绑定数值改变的事件

💡 信号概述

QSpinBox::valueChanged信号有两个重载版本 

  • void valueChanged(int i)

  • void valueChanged(const QString &text)

当微调框的数值改变时,这两个信号都会被发射。int参数版本直接传递新的整数值,而 QString参数版本则传递包含前缀后缀的完整文本 

    //绑定数值改变的事件

    //第一种
     connect(ui.spinBox, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &QtWidgetsApplication2::SpinValueChanged);

    //第二种
    auto t = connect(ui.spinBox, QOverload<int>::of(&QSpinBox::valueChanged), this, &QtWidgetsApplication2::SpinValueChanged);
    if (!t)
    {
        QMessageBox::information(this, "tips", "绑定信号与槽失败");
    }

槽函数

//槽函数
void QtWidgetsApplication2::SpinValueChanged(int a)
{
    QMessageBox::information(this, "tips", QString::number(ui.spinBox->value()));
}

避免在输入过程中因信号被频繁触发而导致的性能问题或逻辑错误

优化信号

        如果要输入50,第一次变动会弹出5,加完0后会弹出50

 ui.spinBox->setKeyboardTracking(false);

设置单步步长 

  //设置单步步长
  ui.spinBox->setSingleStep(5);

(可选) 启用加速,当用户长时间按住按钮时,数值变化会加快

    // (可选) 启用加速,当用户长时间按住按钮时,数值变化会加快
    ui.spinBox->setAccelerated(true);

 

posted @ 2025-11-20 13:30  家煜宝宝  阅读(7)  评论(0)    收藏  举报