基本Widgets(13):【类】QAbstractSpinBox [官翻]

QAbstractSpinBox Class

QAbstractSpinBox类提供了一个选择框和一个行编辑来显示值。

Header#include < QAbstractSpinBox >
qmakeQT += widgets
InheritsQWidget
Inherited ByQDateTimeEdit, QDoubleSpinBox, and QSpinBox

详细说明

该类被设计为QSpinBox、QDoubleSpinBox和QDateTimeEdit等小部件的通用超类。

以下是类的主要属性:

  1. text: QAbstractSpinBox中显示的文本。
  2. alignment:QAbstractSpinBox中文本的对齐方式。
  3. wrapping: QAbstractSpinBox是否从最小值包装到最大值,反之亦然。

QAbstractSpinBox提供了stepBy(int) 虚函数,每当用户触发一个步骤时都会调用该函数。此函数采用整数值表示执行了多少步。例如:按下Qt::键将触发对stepBy(-1)的调用。

当用户在按住Qt::ControlModifier的同时触发一个步骤时,QAbstractSpinBox将按10步执行,而不是执行一个步骤。此步骤修改器影响控制盘事件、关键点事件以及与spinbox按钮的交互。注意,在macOS上,Control对应于Command键。

从Qt5.12开始,可以使用 QStyle::SH_SpinBox_StepModifier 来选择哪个Qt::KeyboardModifier增加步进速率。NoModifier禁用此功能。

QAbstractSpinBox还提供了一个虚拟函数stepEnabled() ,用于确定是否允许在任何点上执行递增/递减操作。此函数返回StepEnabled的位集。

公共类型

enum ButtonSymbols

此枚举类型描述可以在数字调整框中的按钮上显示的符号。
imgimg

ConstantValueDescription
UpDownArrows0经典风格的小箭头。
PlusMinus1+和-符号。
NoButtons2不显示按钮。

enum CorrectionMode

此枚举类型描述在编辑完成时spinbox将用于更正中间值的模式。

ConstantValueDescription
CorrectToPreviousValue0spinbox将还原为最后一个有效值。
CorrectToNearestValue1spinbox将还原为最接近的有效值。

enum StepEnabledFlag

flags StepEnabled

ConstantValue
StepNone0x00
StepUpEnabled0x01
StepDownEnabled0x02

enum StepType

ConstantValue
DefaultStepType0
AdaptiveDecimalStepType1

属性

  1. accelerated: bool 在按下“向上/向下步进”按钮时数字调整框是否会加快步进频率
    如果启用,按住按钮的时间越长,数字调整框将更快地增加/减少值。

    Access functions:

    • bool isAccelerated() const
    • void setAccelerated(bool on)
  2. acceptableInput: const bool 输入是否满足当前验证

    Access functions:

    • bool hasAcceptableInput() const
  3. alignment: Qt::Alignment 数字调整框的对齐方式
    可能的值有Qt::AlignLeft、Qt::AlignRight和Qt::AlignHCenter。
    默认情况下,为Qt::AlignLeft
    尝试将对齐方式设置为非法的标志组合不会产生任何效果。

    Access functions:

    • Qt::Alignment alignment() const

    • void setAlignment(Qt::Alignment flag)

    • 参考:Qt::Alignment

  4. buttonSymbols: ButtonSymbols 当前按钮符号模式
    可能的值可以是上下箭头或PlusMinus。默认设置为上下箭头。
    请注意,某些样式可能会以相同的方式呈现PlusMinus和UpDownArrows。

    Access functions:

    • QAbstractSpinBox::ButtonSymbols buttonSymbols() const
    • void setButtonSymbols(QAbstractSpinBox::ButtonSymbols bs)
  5. correctionMode: CorrectionMode 编辑完成时更正中间值的模式

    Access functions:

    • QAbstractSpinBox::CorrectionMode correctionMode() const
    • void setCorrectionMode(QAbstractSpinBox::CorrectionMode cm)
  6. frame: bool 数字调整框是否使用框架绘制自身
    如果启用(默认设置),数字调整框将在帧内绘制自身,否则数字调整框将在没有任何帧的情况下绘制自身。

    Access functions:

    • bool hasFrame() const

    • void setFrame(bool)

  7. keyboardTracking: bool 是否为spinbox启用键盘跟踪
    如果启用键盘跟踪(默认),则在从键盘输入新值时,spinbox会发出valueChanged() 和textChanged() 信号。

    例如.当用户通过键入6、0和0来输入值600时,spinbox将发出3个分别为6、60和600的信号。

    如果禁用键盘跟踪,则在键入时spinbox不会发出valueChanged() 和textChanged() 信号。稍后,当按下返回键、键盘焦点丢失或使用其他spinbox功能(如按箭头键)时,它会发出信号。

    Access functions:

    • bool keyboardTracking() const
    • void setKeyboardTracking(bool kt)
  8. readOnly: bool 数字调整框是否为只读
    在只读模式下,用户仍然可以将文本复制到剪贴板,或拖放文本;但不能编辑文本。
    QAbstractSpinBox中的QLineEdit在只读模式下不显示光标。

    Access functions:

    • bool isReadOnly() const
    • void setReadOnly(bool r)
  9. showGroupSeparator: bool 是否启用了千位分隔符
    默认情况下,此属性为false。

    Access functions:

    • bool isGroupSeparatorShown() const

    • void setGroupSeparatorShown(bool shown)

  10. specialValueText: QString 特殊值文本
    如果设置,每当当前值等于minimum() 时,数字调整框将显示此文本而不是数字值。典型的用法是表示此选项具有特殊(默认)含义。

    例如,如果数字调整框允许用户选择用于显示图像的比例因子(或缩放级别),并且应用程序能够自动选择一个使图像完全适合显示窗口的比例因子,则可以如下设置数字调整框:

    Access functions:

    • QString specialValueText() const
    • void setSpecialValueText(const QString &txt)
  11. text: const QString 数字调整框的文本,包括任何前缀和后缀
    没有默认文本。

    Access functions:

    • QString text() const
  12. wrapping: bool 确定数字调整框是否为环形
    如果wrapping为true,则从maximum() 值递增将带您到minimum() 值,反之亦然。只有在设置了minimum() 和maximum() 值时,包装才有意义。

    Access functions:

    • bool wrapping() const
    • void setWrapping(bool w)

公共函数

构造和析构

  1. QAbstractSpinBox(QWidget *parent = nullptr)
  2. virtual ~QAbstractSpinBox()

属性相关

  1. bool isAccelerated() const
  2. void setAccelerated(bool on)
  3. bool hasAcceptableInput() const
  4. Qt::Alignment alignment() const
  5. void setAlignment(Qt::Alignment flag)
  6. QAbstractSpinBox::ButtonSymbols buttonSymbols() const
  7. void setButtonSymbols(QAbstractSpinBox::ButtonSymbols bs)
  8. QAbstractSpinBox::CorrectionMode correctionMode() const
  9. void setCorrectionMode(QAbstractSpinBox::CorrectionMode cm)
  10. bool hasFrame() const
  11. void setFrame(bool)
  12. bool keyboardTracking() const
  13. void setKeyboardTracking(bool kt)
  14. bool isReadOnly() const
  15. void setReadOnly(bool r)
  16. bool isGroupSeparatorShown() const
  17. void setGroupSeparatorShown(bool shown)
  18. QString specialValueText() const
  19. void setSpecialValueText(const QString &txt)
  20. QString text() const
  21. bool wrapping() const
  22. void setWrapping(bool w)

特殊

  1. virtual void fixup(QString &input) const 尝试更改文本以使其有效

    如果按下Return或调用interpretatText() 时输入未验证为QValidator::Acceptable,则QAbstractSpinBox将调用此虚拟函数。它将尝试更改文本以使其有效。在不同的子类中重新实现。

  2. void interpretText() 此函数用于解释数字调整框的文本
    如果值自上次解释后发生变化,它将发出信号。

  3. virtual void stepBy(int steps) 每当用户触发一个步骤时调用的虚函数

    steps参数指示执行了多少步。例如,按下Qt::Key_Down将触发对stepBy(-1)的调用,而按下Qt::Key_PageUp将触发对stepBy(10)的调用。

    如果将QAbstractSpinBox子类化,则必须重新实现此函数。请注意,即使结果值超出最小值和最大值的界限,也会调用此函数。这个函数的工作就是处理这些情况。

  4. virtual QValidator::State validate(QString &input, int &pos) const 调用此虚拟函数以确定输入是否有效

    pos参数表示字符串中的位置。在不同的子类中重新实现。

重写的公共函数

  1. virtual bool event(QEvent *event) override
  2. virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const override
  3. virtual QSize minimumSizeHint() const override
  4. virtual QSize sizeHint() const override

公共槽

  1. virtual void clear() 清除除前缀和后缀之外的所有文本
  2. void selectAll() 选择微调框中除前缀和后缀之外的所有文本
  3. void stepDown() 调用这个插槽类似于调用stepBy(-1)
  4. void stepUp() 调用这个插槽类似于调用stepBy(1)

信号

  1. void editingFinished() 当编辑完成时,发出该信号。

    当spinbox失去焦点并且按下enter键时,会发生这种情况。

受保护的函数

  1. void initStyleOption(QStyleOptionSpinBox *option) const
  2. QLineEdit * lineEdit() const
  3. void setLineEdit(QLineEdit *lineEdit)
  4. virtual QAbstractSpinBox::StepEnabled stepEnabled() const

重写的受保护的函数

  1. virtual void changeEvent(QEvent *event) override
  2. virtual void closeEvent(QCloseEvent *event) override
  3. virtual void contextMenuEvent(QContextMenuEvent *event) override
  4. virtual void focusInEvent(QFocusEvent *event) override
  5. virtual void focusOutEvent(QFocusEvent *event) override
  6. virtual void hideEvent(QHideEvent *event) override
  7. virtual void keyPressEvent(QKeyEvent *event) override
  8. virtual void keyReleaseEvent(QKeyEvent *event) override
  9. virtual void mouseMoveEvent(QMouseEvent *event) override
  10. virtual void mousePressEvent(QMouseEvent *event) override
  11. virtual void mouseReleaseEvent(QMouseEvent *event) override
  12. virtual void paintEvent(QPaintEvent *event) override
  13. virtual void resizeEvent(QResizeEvent *event) override
  14. virtual void showEvent(QShowEvent *event) override
  15. virtual void timerEvent(QTimerEvent *event) override
  16. virtual void wheelEvent(QWheelEvent *event) override

参考

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值