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);

浙公网安备 33010602011771号