• 旋转框/微调按钮的基类--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 键时,会发送该信号。

  • 相关阅读:
    B031-网络编程 Socket Http TomCat
    关于java业务层是否抛异常
    Anycast CLB 如何支持多地&动态加速的负载均衡服务,高速互联转发!
    Node.js|全局安装的模块无法正常使用
    电子科学与技术毕设题目选题推荐
    力扣:172. 阶乘后的零(Python3)
    PHP XML DOM
    【数据结构】List、Set、Map的联系和区别(通俗易懂,清晰直观!!)
    2022DASCTF MAY web
    Android使用AOP切面编程
  • 原文地址:https://blog.csdn.net/zxf347085420/article/details/132897511