QT6(QSpinBox和QDoubleSpinBox)
QT6
QSpinBox和QDoubleSpinBox
QSpinBox和QDoubleSpinBox都是QAbstractSpinBox的子类
QSpinBox (整型数字选择框) 属性
属性 | 数据类型 | 描述 |
---|---|---|
accelerated | bool | 设置是否启用加速。长时间按住按钮会加快数值变化速度 |
keyboardTracking | bool | 设置键盘跟踪。true 时每按一键都发射信号;false 时只在输入完成后发射 |
readOnly | bool | 设置控件是否为只读。用户无法键盘输入,但可通过按钮调整 |
wrapping | bool | 设置数值是否循环。达到最大值后继续增加会跳转到最小值 |
frame | bool | 设置是否绘制控件边框。 |
alignment | Qt::Alignment | 设置文本框内数值的对齐方式(如右对齐、居中) |
buttonSymbols | QAbstractSpinBox::ButtonSymbols | 设置增减按钮符号:箭头、加减号或无按钮 |
correctionMode | QAbstractSpinBox::CorrectionMode | 设置输入无效值时的自动纠正模式 |
specialValueText | QString | 当值等于最小值时显示的特殊文本(如 “Off”) |
特有属性
属性 | 数据类型 | 描述 |
---|---|---|
value | int | 控件的当前整数值(核心属性) |
minimum | int | 允许的最小值 |
maximum | int | 允许的最大值 |
singleStep | int | 点击一次按钮改变的整步长 |
prefix | QString | 显示在数值前面的前缀(如 "$" ) |
suffix | QString | 显示在数值后面的后缀(如 " cm" ) |
displayIntegerBase | int | 设置数值显示的进制基数(如 2:二进制,16:十六进制) |
常用信号
valueChanged(int value)
: 整数值改变时发射textChanged(const QString &text)
: 显示的完整文本改变时发射
QDoubleSpinBox (浮点型数字选择框) 属性
属性 | 数据类型 | 描述 |
---|---|---|
accelerated | bool | 设置是否启用加速。长时间按住按钮会加快数值变化速度 |
keyboardTracking | bool | 设置键盘跟踪。true 时每按一键都发射信号;false 时只在输入完成后发射 |
readOnly | bool | 设置控件是否为只读。用户无法键盘输入,但可通过按钮调整 |
wrapping | bool | 设置数值是否循环。达到最大值后继续增加会跳转到最小值 |
frame | bool | 设置是否绘制控件边框 |
alignment | Qt::Alignment | 设置文本框内数值的对齐方式(如右对齐、居中) |
buttonSymbols | QAbstractSpinBox::ButtonSymbols | 设置增减按钮符号:箭头、加减号或无按钮 |
correctionMode | QAbstractSpinBox::CorrectionMode | 设置输入无效值时的自动纠正模式 |
specialValueText | QString | 当值等于最小值时显示的特殊文本(如 “Default”) |
特有属性
属性 | 数据类型 | 描述 |
---|---|---|
value | double | 控件的当前浮点数值(核心属性) |
minimum | double | 允许的最小浮点值 |
maximum | double | 允许的最大浮点值 |
singleStep | double | 点击一次按钮改变的浮点步长 |
prefix | QString | 显示在数值前面的前缀(如 "€" ) |
suffix | QString | 显示在数值后面的后缀(如 " kg" ) |
decimals | int | 核心特性:设置数值显示和内部处理的小数位数 |
常用信号
valueChanged(double value)
: 浮点数值改变时发射textChanged(const QString &text)
: 显示的完整文本改变时发射
我们来做个小案例来尝试一下
代码测试
#include "widget.h"
#include "./ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 创建信号和槽当spinNum发生变化时,调用valueChanged,执行on_pushButton_clicked方法this->connect(ui->spinNum,&QSpinBox::valueChanged,this,&Widget::on_pushButton_clicked);this->connect(ui->spinPrice,&QDoubleSpinBox::valueChanged,this,&Widget::on_pushButton_clicked);
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked()
{int num = ui->spinNum->value();float price = ui->spinPrice->value();float total = price * num;ui->spinTotal->setValue(total);
}void Widget::on_spinDec_valueChanged(int arg1)
{ui->spinBin->setValue(arg1);ui->spinHex->setValue(arg1);
}void Widget::on_spinBin_valueChanged(int arg1)
{ui->spinDec->setValue(arg1);ui->spinHex->setValue(arg1);
}void Widget::on_spinHex_valueChanged(int arg1)
{ui->spinBin->setValue(arg1);ui->spinDec->setValue(arg1);
}
效果展示
常用的按钮按键
常用的按钮组件有普通按钮QPushButton,工具按钮QToolButton,单选按钮QRadioButton,复选按钮QCheckBox,它们的父类都是QAbstractButton
QAbstractButton的autoExclusive属性:如果启用了自动独占性,属于同一个父组件的可检查按钮将互斥
QGroupBox的flat属性:可以最小化区域框的空间消耗
代码测试
#include "widget.h"
#include "./ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}void Widget::on_btnLeft_clicked()
{ui->lineEdit->setAlignment(Qt::AlignLeft);
}void Widget::on_btnCenter_clicked()
{ui->lineEdit->setAlignment(Qt::AlignCenter);
}void Widget::on_btnRigth_clicked()
{ui->lineEdit->setAlignment(Qt::AlignRight);
}void Widget::on_btnFontBold_clicked(bool checked)
{QFont font = ui->lineEdit->font();font.setBold(checked);ui->lineEdit->setFont(font);
}void Widget::on_btnFontItalic_clicked(bool checked)
{QFont font = ui->lineEdit->font();font.setItalic(checked);ui->lineEdit->setFont(font);
}void Widget::on_btnUnerLine_clicked(bool checked)
{QFont font = ui->lineEdit->font();font.setUnderline(checked);ui->lineEdit->setFont(font);
}void Widget::on_checkBox_clicked(bool checked)
{ui->lineEdit->setReadOnly(checked);
}void Widget::on_checkBox_2_clicked(bool checked)
{ui->lineEdit->setEnabled(checked);
}void Widget::on_checkBox_3_clicked(bool checked)
{ui->lineEdit->setClearButtonEnabled(checked);
}void Widget::on_btnBlack_clicked()
{QPalette palette = ui->lineEdit->palette();palette.setColor(QPalette::Text,Qt::black);ui->lineEdit->setPalette(palette);
}void Widget::on_radioButton_3_clicked()
{QPalette palette = ui->lineEdit->palette();palette.setColor(QPalette::Text,Qt::red);ui->lineEdit->setPalette(palette);
}void Widget::on_btnBlue_clicked()
{QPalette palette = ui->lineEdit->palette();palette.setColor(QPalette::Text,Qt::blue);ui->lineEdit->setPalette(palette);
}
效果展示