01 QSpinBox介绍
QSpinBox是一个整数输入控件类,它提供了一个用于输入整数值的界面元素。QSpinBox适用于各种需要输入整数值的场景,例如设置边框宽度、设置字体大小等。
- QSpinBox的主要功能和特点:
整数输入:QSpinBox只能接收和显示整数,而不支持浮点数。
范围限制:可以通过setMinimum()、setMaximum()和setRange()方法设置最小值和最大值,以限制用户输入的范围。
交互性:用户可以通过鼠标或键盘来调整输入的数值。
信号和槽:当QDoubleSpinBox的值改变时,会发出valueChanged()信号。
前缀和后缀:QSpinBox还支持前缀和后缀,可以用于显示额外的信息。
- 如何使用QSpinBox:
头文件:#include <QSpinBox>
cmake:find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake:QT += widgets
继承于:QAbstractSpinBox
02 QSpinBox默认风格显示例子
#include <QSpinBox>
m_pSpinBox = new QSpinBox(this);
m_pSpinBox->setGeometry(35, 35, 120, 32);
03 QSpinBox信号
// 当值改变时,发射以下二个信号。
void valueChanged(int i)
void valueChanged(const QString &text)
/**** Lambda表达式连接信号例子: ****/
m_pSpinBox = new QSpinBox(this);
connect(m_pSpinBox, QOverload<int>::of(&QSpinBox::valueChanged),
[=](int i) {/*...*/});
connect(m_pSpinBox, QOverload<const QString&>::of(&QSpinBox::valueChanged),
[=](const QString& text) {/*...*/});
04 QSpinBox属性和状态
- buttonSymbols按钮符号:
buttonSymbols按钮符号,用于指定控件中的符号。
QAbstractSpinBox::ButtonSymbols宏定义如下:
QAbstractSpinBox::UpDownArrows 0 向上、向下箭头按钮符号。(默认)
QAbstractSpinBox::PlusMinus 1 加号(+)、减号(-)按钮符号。
QAbstractSpinBox::NoButtons 2 没有按钮符号。
// 访问函数。
QAbstractSpinBox::ButtonSymbols buttonSymbols() const;
void setButtonSymbols(QAbstractSpinBox::ButtonSymbols bs);
/**** 例子: ****/
m_pSpinBox->setButtonSymbols(QAbstractSpinBox::PlusMinus); // 设置为加号、减号按钮符号。
m_pSpinBox->setStyleSheet("border: 1px solid black;"); // 需要设置边框(+-)号才有效。(Qt-Bug)
- correctionMode校正模式:
correctionMode校正模式,用于描述在编辑完成时微调框将用于更正中间值的模式。
QAbstractSpinBox::CorrectionMode宏定义如下:
QAbstractSpinBox::CorrectToPreviousValue 0 微调框将恢复为最后一个有效值。(默认)
QAbstractSpinBox::CorrectToNearestValue 1 微调框将恢复为最接近的有效值。
// 访问函数。
void setCorrectionMode(QAbstractSpinBox::CorrectionMode cm);
QAbstractSpinBox::CorrectionMode correctionMode() const;
- hasAcceptableInput是否接受输入:
// 访问函数。
bool hasAcceptableInput() const
- text文本:
带前缀和后缀。
// 访问函数。
QString text() const
- cleanText纯净文本:
不带前缀和后缀,只返回“数值”文本。
// 访问函数。
QString cleanText() const
- specialValueText特殊文本:
specialValueText特殊文本,用于当数值无效时显示的文本。
// 访问函数。
QString specialValueText() const
void setSpecialValueText(const QString &txt)
/**** 例子: ****/
m_pSpinBox->setSpecialValueText("无效数值。"); // 设置特殊文本。
- wrapping环绕功能:
true:允许用户通过向上和向下键循环选择值。
false:不允许循环选择值。(默认)
// 访问函数。
bool wrapping() const
void setWrapping(bool w)
- isReadOnly只读模式:
true:只读模式,用户不能编辑微调框中的值,但可以滚动选择值。
false:编辑模式,用户可以编辑微调框中的值。(默认)
// 访问函数。
void setReadOnly(bool r)
bool isReadOnly() const
- keyboardTracking键盘跟踪:
keyboardTracking键盘跟踪,用于设置是否跟踪键盘输入。
true:当用户输入 100 三个字符时,会发射 1 10 100 三次valueChanged()信号。(默认)
false:只有当用户输入完成后按回车键,或者其他失去焦点情况下,才发射一次valueChanged()信号。
// 访问函数。
void setKeyboardTracking(bool kt)
bool keyboardTracking() const
- alignment对齐方式:
alignment用于设置微调框的对齐方式。
Qt::Alignment宏定义有以下几种常用对齐方式:
Qt::AlignLeft 左对齐。(默认)
Qt::AlignRight 右对齐。
Qt::AlignHCenter 水平居中。
Qt::AlignVCenter 垂直居中。
Qt::AlignTop 顶部对齐。
Qt::AlignBottom 底部对齐。
Qt::AlignCenter 居中对齐。
// 访问函数。
void setAlignment(Qt::Alignment flag)
Qt::Alignment alignment() const
- hasFrame是否显示边框:
默认true显示边框。
// 访问函数。
void setFrame(bool)
bool hasFrame() const
- isAccelerated加速模式:
true:加速模式;当长按向上向下键时,会快速增减当前数值。
false:正常模式;长按向上和向下键时,正常速度增减当前数值。(默认)
// 访问函数。
void setAccelerated(bool on);
bool isAccelerated() const;
- isGroupSeparatorShown是否显示组分隔符:
组分隔符通常用于显示千位分隔符,以便更易于阅读大数值。
true:显示组分隔符。
false:不显示组分隔符。(默认)
// 访问函数。
void setGroupSeparatorShown(bool shown)
bool isGroupSeparatorShown() const
/**** 例子: ****/
m_pSpinBox->setGroupSeparatorShown(true); // 设置显示组分隔符。
m_pSpinBox->setRange(0, 99999999);
m_pSpinBox->setValue(50000000); // 当前数值为 50000000 显示例子如下图。
- value整数值:
// 访问函数
int value() const
void setValue(int val)
- prefix前缀:
// 访问函数
QString prefix() const
void setPrefix(const QString &prefix)
/**** 例子: ****/
m_pSpinBox->setPrefix("宽度:"); // 设置前缀。
- suffix后缀:
// 访问函数
QString suffix() const
void setSuffix(const QString &suffix)
/**** 例子: ****/
m_pSpinBox->setSuffix("%"); // 设置后缀。
- minimum&maximum最小最大限制:
minimum默认是0。
maximum默认是99。
// 访问函数
int minimum() const
void setMinimum(int min)
int maximum() const
void setMaximum(int max)
void setRange(int min, int max)
/**** 例子: ****/
m_pSpinBox->setRange(-9999, 9999); // 设置限制最小最大范围 -9999 至 9999。
- singleStep单次增减步长:
默认1。
// 访问函数
int singleStep() const
void setSingleStep(int val)
/**** 例子: ****/
m_pSpinBox->setSingleStep(10); // 设置单次培养步长10。
- stepType步长类型:
stepType步长类型。
QAbstractSpinBox::StepType宏定义如下:
QAbstractSpinBox::DefaultStepType 0 默认步长类型,按照singleStep属性增减。(默认)
QAbstractSpinBox::AdaptiveDecimalStepType 1 自适应小数步长类型。
// 访问函数
QAbstractSpinBox::StepType stepType() const
void setStepType(QAbstractSpinBox::StepType stepType)
- displayIntegerBase整数基数:
用来设置显示整数的基数,如果你正在使用QSpinBox来输入十六进制数,你可以使用setDisplayIntegerBase(16) 来确保显示的整数是十六进制格式。
默认 10 按照十进制格式显示整数。
// 访问函数
int displayIntegerBase() const
void setDisplayIntegerBase(int base)
/**** 例子: ****/
m_pSpinBox->setDisplayIntegerBase(16); // 设置以十六进制格式显示整数。
// 如下图示例:十六进制(4e) = 十进制(78)
05 QSpinBox常用函数
// 单次增加当前值。
void stepUp();
// 单次减少当前值。
void stepDown();
// 选择数值。
void selectAll();
// 清空输入数值。
virtual void clear();
-End-
#想了解更多精彩内容,关注下方公众号,还有示例源码、开发工具免费下载。
本人小杨哥:
超20年C++开发经验;著名开源产品高并发C++应用服务器MYCP作者;开源企业即时通讯软件Entboost首席架构师;开发有WordBN字远笔记等共享软件产品。