Qt6.5类库详解:QSpinBox

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字远笔记等共享软件产品。

  • 29
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天恩软件工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值