旋转框/微调按钮的基类--QAbstractSpinBox 类

1、 QAbstractSpinBox 类是 QWidget 类的直接子类,虽然该类不是抽象类,但该类并未提供实
际的功能,仅为旋转框提供了一些外观的形式以及需要子类实现了成员, 也就是说点击微调按钮的上/下按钮,不会使其中的数值有变化。 实际的功能该类的子类提供的,用户也可继承该类实现自定义的功能
2、旋转框是由微调按钮(用于调整值) 和 行编辑器(用于显示值)组成的(见右图)

                                
3、步长:是指当使用微调按钮的箭头增加/减少值时,该值将会增加/减少步长的数量,比如
若当前值为 10,步长为 2,则使用向上箭头调整其值时,该值将增长为 12。
3、 QAbstractSpinBox 类中的属性

QAbstractSpinBox 类(属性速查表)
属性名说明属性名说明
accelerated是否加快调整速度keyboardTracking是否启用键盘跟踪
acceptableInput是否符合验证的要求readOnly是否为只读
alignment对齐方式showGroupSeparator是否显示千位分隔符
buttonSymbols微调按钮的形式specialValueText设置和返回特殊值文本
correctionMode中间值的更正模式text获取旋转框中的文本(包括前/后缀)
frame是否绘制默认边框wrapping调整值时是否可以循环

①、 accelerated: bool 访问函数: bool isAccelerated() const; void setAccelerated(bool);
此属性用于描述当按下旋转框的“向上/向下”按钮一段时间不放时是否会加快调整
旋转框中数值增加/减少的速度。 默认为 false。


②、 acceptableInput: bool 访问函数: bool hasAcceptableInput() const;
此属性用于获取输入的值是否满足当前验证器的要求。


③、 alignmen: Qt::Alignment
访问函数: Qt::Alignment alignment() const; void setAlignment(Qt::Alignment);
对齐方式,默认值为 Qt::AlignLeft。 Qt::Alignment 枚举见“部件公共枚举”章节。


④、 buttonSymbols: ButtonSymbols
访问函数: ButtonSymbols buttonSymbols() const; void setButtonSymbols(ButtonSymbols);
此属性用于设置当前旋转框右侧微调按钮的外观样式,默认值为 UpDownArrows。注
意: 有可能会以相同的方式显示 PlusMinus 和 UpDownArrows。 其中 ButtonSymbols
枚举见下表

QAbstractSpinBox::ButtonSymbols 枚举(无标志)
用于描述旋转框右侧微调按钮的外观样式
成员说明
QAbstractSpinBox::UnDownArrows0箭头形式
QAbstractSpinBox::PlusMinus1+或-符号的形式
QAbstractSpinBox::NoButtons2不显示按钮

                                        

⑤、 correctionMode: CorrectionMode
访问函数: CorrectionMode correctionMode() const; void setCorrectionMode(CorrectionMode);
当编辑完成后,更正中间值的模式。默认为 QAbstractSpinBox::CorrectToPreviousValue。
枚举 CorrectionMode 见下表

QAbstractSpinBox::CorrectionMode 枚举(无标志)
用于描述当编辑完成后,更正中间值的模式
成员说明
QAbstractSpinBox::CorrectToPreviousValue0恢复到最后一个有效值
QAbstractSpinBox::CorrectToNearestValue1恢复到最近的有效值

⑥、 frame: bool 访问函数: bool hasFrame() const; void setFrame(bool);
此属性描述是否绘制旋转框默认的边框

                        

⑦、 keyboardTracking: bool
访问函数: bool keyboardTracking() const; void setKeyboardTracking(bool);
 是否启用键盘跟踪(默认为启用)。
 若启用了键盘跟踪,则当用户从键盘输入新值时,每键入一个值旋转框就会发
送一个 valueChanged()信号。比如当用户通过键盘 6, 0, 0 而输入值 600 时,旋
转框发出 3 个信号,其值分别为 6, 60, 600。
 若禁用键盘跟踪,则旋转框不会在键入时立即发送 valueChanged()信号,而是在
按下 enter 键、失去键盘焦点等时候发送该信号。

⑧、 readOnly: bool 访问函数: bool isReadOnly() const; void setReadOnly(bool);
是否启用只读模式(默认为 false)。 只读模式不能更改值(但仍可选择和复制),也不会
显示文字光标。

⑨、 showGroupSeparator: bool //qt5.3
访问函数: bool isGroupSeparatorShow() const; void setGroupSeparatorShow(bool);

此属性描述,是否启用千位分隔符(默认为 false),即右图中数字下的逗号

注意: Qt 在输入数值后需要点击一下微调按钮才会显示出千位分隔符。

                                
⑩、 specialValueText: QString
访问函数: QString specialValueText() const; void setSpecialValueText(const QString&);
 此属性描述旋转框的特殊值文本(默认为没有特殊值文本)。
 特殊值文本是指, 当值等于最小值时旋转框显示这个特殊值文本而不显示数值。
 特殊值文本会被 QSpinBox::valueChanged()信号传递。

 使用空字符串设置特殊值文本,可关闭特殊值文本的显示。
 若未设置特殊值文本,则该属性为空字符串

⑪、 text: const QString 访问函数: QString text() const;
获取旋转框中的文本包括前缀和后缀。

⑫、 wrapping: bool 访问函数: bool wrapping() const; void setWrapping(bool);
此属性描述旋转框在调整值时是否可以循环(默认为 false),若该属性为 true,则当使
用微调按钮将值增加到最大值时,会循环至最小值,返之亦然。只有在设置了最大值
和最小值时才有意义。

4、 QAbstractSpinBox 类中的函数
①、 QAbstractSpinBox(QWidget* parent = Q_NULLPTR); //构造函数
②、 void selectAll(); //槽, 选中除了前缀和后缀以外的所有文本
③、 virtual void clear() //槽,虚拟的, 清除行编辑器中的所有文本,但前缀和后缀除外
④、 virtual void stepBy(int steps); //虚拟的
当激活微调按钮的向上/向下箭头时会调用此虚函数,该函数会把当前值增加/减少
steps, 其实 steps 就是步长。 比如当前值为 10,则调用 stepBy(3);之后的值为 13。子
类化 QAbstractSpinBox 必须实现此函数,注意:即使结果值超出了最小值和最大值
的范围,此函数仍会被调用。
⑤、 void stepDown() ; //槽
降低一个步长,类似于调用 stepBy(-1);准确的说是 stepBy(steps);因为 steps 的值不一
定是-1,比如,对于 QSpinBox 若把 singleStep 属性设置为 2,则调用该函数将使用
减少 2。
⑥、 void stepUp(); //槽
提高一个步长,类似于调用 stepBy(1);准确的说是 stepBy(steps);见 stepDown()。
⑦、 virtual QValidator::State validate(QString &input, int &pos) const; //虚拟的
此虚函数用于验证 input 是否有效。该虚函数在各子类中被重新实现。
⑧、 virtual void fixup(QString &input) const; //虚拟的
若按下 return 或调用 interpretText()时,对 input 的验证不为 QValidator::Acceptable(可
接受)时,则调用此虚函数,该函数会尝试更正文本以使其有效,该函数在各子类中
被重新实现。
⑨、 virtual StepEnabled stepEnabled() const; //受保护的
此函数决定了微调按钮向上/向下是否合法。若子类化 QAbstractSpinBox,需要实现
此函数。 StepEnabled 标志见下表

QAbstractSpinBox::StepEnabledFlag 枚举
标志为: QAbstractSpinBox::StepEnabled
成员
QAbstractSpinBox::StepNone0x00
QAbstractSpinBox::StepUnEnabled0x01
QAbstractSpinBox::StepDownEnabled0x02
⑩、 QLineEdit* lineEdit() const;//受保护的
void setLineEdit(QLineEdit* lineEdit);//受保护的

以上函数用于获取和设置旋转框的行编辑器。其中,参数 lineEdit 不能为 0。若设置
的新的行编辑器 lineEdit 的 QLineEdit::validator()函数返回 0(即未安装验证器),则将
在新的行编辑器中使用旋转框内部的验证器。

⑪、 virtual void keyPressEvent(QKeyEvent* event); //受保护的
这是对 QWidget::keyPressEvent()的重新实现,该函数重新实现了以下功能

按键说明
向上箭头这会调用 stepBy(1),表示调整值增加 1
向下箭头这会调用 stepBy(-1),表示调整值减少 1
Page up这会调用 stepBy(10),表示调整值增加 10
Page down这会调用 stepBy(-10),表示调整值减少 10

⑫、 void editingFinished() ; //信号
当编辑完成时发送该信号,即当旋转框失去焦点按下 enter 键时,会发送该信号。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值