QAbstractSpinBox Class

QAbstractSpinBox 类提供了一个旋转框和行编辑器来显示值。更多

Header: #include <QAbstractSpinBox>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
继承: QWidget
继承于

QDateTimeEdit,QDoubleSpinBox, 以及QSpinBox

公共类型

enum ButtonSymbols { UpDownArrows, PlusMinus, NoButtons }
enum CorrectionMode { CorrectToPreviousValue, CorrectToNearestValue }
flags StepEnabled
enum StepEnabledFlag { StepNone, StepUpEnabled, StepDownEnabled }
enum StepType { DefaultStepType, AdaptiveDecimalStepType }

属性

公共函数

QAbstractSpinBox(QWidget *parent = nullptr)
virtual ~QAbstractSpinBox()
Qt::Alignment alignment() const
QAbstractSpinBox::ButtonSymbols buttonSymbols() const
QAbstractSpinBox::CorrectionMode correctionMode() const
virtual void fixup(QString &input) const
bool hasAcceptableInput() const
bool hasFrame() const
void interpretText()
bool isAccelerated() const
bool isGroupSeparatorShown() const
bool isReadOnly() const
bool keyboardTracking() const
void setAccelerated(bool on)
void setAlignment(Qt::Alignment flag)
void setButtonSymbols(QAbstractSpinBox::ButtonSymbols bs)
void setCorrectionMode(QAbstractSpinBox::CorrectionMode cm)
void setFrame(bool)
void setGroupSeparatorShown(bool shown)
void setKeyboardTracking(bool kt)
void setReadOnly(bool r)
void setSpecialValueText(const QString &txt)
void setWrapping(bool w)
QString specialValueText() const
virtual void stepBy(int steps)
QString text() const
virtual QValidator::State validate(QString &input, int &pos) const
bool wrapping() const

重新实现的公共函数

virtual bool event(QEvent *event) override
virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const override
virtual QSize minimumSizeHint() const override
virtual QSize sizeHint() const override

公共插槽

virtual void clear()
void selectAll()
void stepDown()
void stepUp()

信号

受保护函数

virtual void initStyleOption(QStyleOptionSpinBox *option) const
QLineEdit *lineEdit() const
void setLineEdit(QLineEdit *lineEdit)
virtual QAbstractSpinBox::StepEnabled stepEnabled() const

重新实现的受保护函数

virtual void changeEvent(QEvent *event) override
virtual void closeEvent(QCloseEvent *event) override
virtual void contextMenuEvent(QContextMenuEvent *event) override
virtual void focusInEvent(QFocusEvent *event) override
virtual void focusOutEvent(QFocusEvent *event) override
virtual void hideEvent(QHideEvent *event) override
virtual void keyPressEvent(QKeyEvent *event) override
virtual void keyReleaseEvent(QKeyEvent *event) override
virtual void mouseMoveEvent(QMouseEvent *event) override
virtual void mousePressEvent(QMouseEvent *event) override
virtual void mouseReleaseEvent(QMouseEvent *event) override
virtual void paintEvent(QPaintEvent *event) override
virtual void resizeEvent(QResizeEvent *event) override
virtual void showEvent(QShowEvent *event) override
virtual void timerEvent(QTimerEvent *event) override
virtual void wheelEvent(QWheelEvent *event) override

详细说明

该类被设计为QSpinBoxQDoubleSpinBox 和 等部件的通用超类。QDateTimeEdit

以下是该类的主要属性:

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

QAbstractSpinBox 提供了一个虚拟stepBy() 函数,每当用户触发一个步骤时都会调用该函数。该函数使用一个整数值来表示走了多少步。例如,按Qt::Key_Down 会触发对stepBy(-1) 的调用。

当用户在按住Qt::ControlModifier 的同时触发一个步进时,QAbstractSpinBox 将步进 10 步,而不是单步。该步进修改器会影响滚轮事件、按键事件以及与旋转框按钮的交互。请注意,在 macOS 上,Control 与 Command 键相对应。

自 Qt 5.12 起,QStyle::SH_SpinBox_StepModifier 可用于选择哪个Qt::KeyboardModifier 增加步速。Qt::NoModifier 可禁用此功能。

QAbstractSpinBox 还提供了一个虚拟函数stepEnabled() 来确定是否允许在任意点进行上/下步进。该函数返回StepEnabled 的比特集。

另请参阅 QAbstractSlider,QSpinBox,QDoubleSpinBox,QDateTimeEditSpin Boxes 示例

成员类型文档

enum QAbstractSpinBox::ButtonSymbols

该枚举类型描述了可在旋转框按钮上显示的符号。

常数描述
QAbstractSpinBox::UpDownArrows0经典样式的小箭头。
QAbstractSpinBox::PlusMinus1+-符号。
QAbstractSpinBox::NoButtons2不显示按钮。

另请参阅 QAbstractSpinBox::buttonSymbols

enum QAbstractSpinBox::CorrectionMode

该枚举类型描述了在编辑结束后,自旋盒将使用何种模式来纠正Intermediate 值。

常量说明
QAbstractSpinBox::CorrectToPreviousValue0自旋盒将恢复到最后一个有效值。
QAbstractSpinBox::CorrectToNearestValue1自旋盒将恢复到最近的有效值。

另请参阅 correctionMode

枚举 QAbstractSpinBox::StepEnabledFlag
标志 QAbstractSpinBox::StepEnabled

常量
QAbstractSpinBox::StepNone0x00
QAbstractSpinBox::StepUpEnabled0x01
QAbstractSpinBox::StepDownEnabled0x02

StepEnabled 类型是QFlags<StepEnabledFlag> 的类型定义。它存储 StepEnabledFlag 值的 OR 组合。

enum QAbstractSpinBox::StepType

常数
QAbstractSpinBox::DefaultStepType0
QAbstractSpinBox::AdaptiveDecimalStepType1

属性文件

accelerated : bool

该属性用于确定在按下步进上/下按钮时,旋转方框是否会加快步进频率。

如果启用,则按住按钮的时间越长,旋转框增加/减少数值的速度越快。

访问功能:

bool isAccelerated() const
void setAccelerated(bool on)

[read-only] acceptableInput : const bool

该属性表示输入是否满足当前验证条件

访问功能:

bool hasAcceptableInput() const

另请参阅 validate(),fixup() 和correctionMode

alignment : Qt::Alignment

此属性保留自旋框的对齐方式

可能的值是Qt::AlignLeft,Qt::AlignRight, 和Qt::AlignHCenter

默认情况下,对齐方式为Qt::AlignLeft

试图将对齐方式设置为非法的标志组合将不起任何作用。

访问函数:

Qt::Alignment alignment() const
void setAlignment(Qt::Alignment flag)

另请参见 Qt::Alignment

buttonSymbols : ButtonSymbols

该属性保存当前按钮符号模式

UpDownArrows PlusMinus默认值为UpDownArrows

请注意,某些样式可能会将PlusMinusUpDownArrows 相同呈现。

访问功能:

QAbstractSpinBox::ButtonSymbols buttonSymbols() const
void setButtonSymbols(QAbstractSpinBox::ButtonSymbols bs)

另请参阅 ButtonSymbols

correctionMode : CorrectionMode

该属性用于在编辑结束时修正Intermediate 值的模式。

默认模式为QAbstractSpinBox::CorrectToPreviousValue

访问功能:

QAbstractSpinBox::CorrectionMode correctionMode() const
void setCorrectionMode(QAbstractSpinBox::CorrectionMode cm)

另请参阅 acceptableInput,validate() 和fixup() 。

frame : bool

该属性用于确定自旋框在绘制时是否带有边框。

如果启用(默认),则自旋框在框架内绘制,否则自旋框在绘制时不带任何框架。

访问函数

bool hasFrame() const
void setFrame(bool)

keyboardTracking : bool

该属性用于说明是否为自旋框启用了键盘跟踪功能。

如果启用了键盘跟踪(默认),则在键盘输入新值时,spinbox 会发出 valueChanged() 和 textChanged() 信号。

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

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

访问功能:

bool keyboardTracking() const
void setKeyboardTracking(bool kt)

readOnly : bool

该属性表示旋转框是否为只读。

在只读模式下,用户仍可将文本复制到剪贴板,或拖放文本,但不能对其进行编辑。

在只读模式下,QAbstractSpinBox 中的QLineEdit 不会显示光标。

访问功能:

bool isReadOnly() const
void setReadOnly(bool r)

另请参阅 QLineEdit::readOnly

showGroupSeparator : bool

该属性表示是否启用千位分隔符。默认情况下,该属性为 false。

访问函数:

bool isGroupSeparatorShown() const
void setGroupSeparatorShown(bool shown)

specialValueText : QString

此属性包含特殊值文本

如果设置了该属性,当当前值等于最小值()时,旋转框将显示该文本而不是数值。其典型用途是表示该选择具有特殊(默认)含义。

例如,如果您的自旋框允许用户选择显示图像的缩放系数(或缩放级别),而您的应用程序能够自动选择一个使图像完全适合显示窗口的缩放系数,那么您可以这样设置自旋框:

    QSpinBox *zoomSpinBox = new QSpinBox;
    zoomSpinBox->setRange(0, 1000);
    zoomSpinBox->setSingleStep(10);
    zoomSpinBox->setSuffix("%");
    zoomSpinBox->setSpecialValueText(tr("Automatic"));
    zoomSpinBox->setValue(100);

用户可以选择从 1% 到 1000% 的缩放比例,也可以选择 "自动",由应用程序自行选择。然后,您的代码必须将自旋框值 0 解释为用户要求缩放图像以适应窗口。

除了特殊值只显示特殊值文本,所有值都会显示前缀和后缀(如果已设置)。特殊文本在QSpinBox::textChanged() 信号中传递,该信号传递一个QString

要关闭特殊值文本显示,请使用空字符串调用该函数。默认情况下不显示特殊值文本,即照常显示数值。

如果没有设置特殊值文本,则 specialValueText() 返回空字符串。

访问函数:

QString specialValueText() const
void setSpecialValueText(const QString &txt)

[read-only] text : const QString

此属性保存自旋框的文本,包括任何前缀和后缀

没有默认文本。

访问功能:

QString text() const

wrapping : bool

该属性表示自旋框是否为圆形。

如果缠绕为真,则从最大()值向上移动将到达最小()值,反之亦然。只有设置了最小()和最大()值,缠绕才有意义。

QSpinBox *spinBox = new QSpinBox(this);
spinBox->setRange(0, 100);
spinBox->setWrapping(true);
spinBox->setValue(100);
spinBox->stepBy(1);
// value is 0

访问函数:

bool wrapping() const
void setWrapping(bool w)

另请参见 QSpinBox::minimum() 和QSpinBox::maximum()。

成员函数文档

[explicit] QAbstractSpinBox::QAbstractSpinBox(QWidget *parent = nullptr)

使用给定的parent 、默认的wrapping对齐属性构造抽象 spinbox。

[virtual noexcept] QAbstractSpinBox::~QAbstractSpinBox()

QAbstractSpinBox 销毁时调用。

[override virtual protected] void QAbstractSpinBox::changeEvent(QEvent *event)

重实现:QWidget::changeEvent(QEvent *event).

[virtual slot] void QAbstractSpinBox::clear()

清除行编辑器中除前缀和后缀之外的所有文本。

[override virtual protected] void QAbstractSpinBox::closeEvent(QCloseEvent *event)

重实现:QWidget::closeEvent(QCloseEvent *event).

[override virtual protected] void QAbstractSpinBox::contextMenuEvent(QContextMenuEvent *event)

重实现:QWidget::contextMenuEvent(QContextMenuEvent *event).

[signal] void QAbstractSpinBox::editingFinished()

编辑完成时会发出该信号。当旋转框失去焦点和按下回车键时会发生这种情况。

[override virtual] bool QAbstractSpinBox::event(QEvent *event)

重实现:QWidget::event(QEvent *event).

[virtual] void QAbstractSpinBox::fixup(QString &input) const

当按下 Return 键或调用interpretText() 时,如果input 未验证为QValidator::Acceptable ,则QAbstractSpinBox 将调用此虚函数。它将尝试更改文本,使其有效。在各种子类中重新实现。

[override virtual protected] void QAbstractSpinBox::focusInEvent(QFocusEvent *event)

重实现:QWidget::focusInEvent(QFocusEvent *event).

[override virtual protected] void QAbstractSpinBox::focusOutEvent(QFocusEvent *event)

重实现:QWidget::focusOutEvent(QFocusEvent *event).

[override virtual protected] void QAbstractSpinBox::hideEvent(QHideEvent *event)

重实现:QWidget::hideEvent(QHideEvent *event).

[virtual protected] void QAbstractSpinBox::initStyleOption(QStyleOptionSpinBox *option) const

使用此QSpinBox 中的值初始化option 。当子类需要QStyleOptionSpinBox ,但又不想自己填写所有信息时,该方法非常有用。

另请参阅 QStyleOption::initFrom()。

[override virtual] QVariant QAbstractSpinBox::inputMethodQuery(Qt::InputMethodQuery query) const

重实现:QWidget::inputMethodQuery(Qt::InputMethodQuery query) const.

void QAbstractSpinBox::interpretText()

该函数解释自旋框的文本。如果值在上次解释后发生了变化,它将发出信号。

[override virtual protected] void QAbstractSpinBox::keyPressEvent(QKeyEvent *event)

重实现:QWidget::keyPressEvent(QKeyEvent *event)。

此函数处理键盘输入。

具体处理以下按键:

回车/回车键该函数将重新解释文本并发出信号,即使该值自上次发出信号以来未发生变化。
向上将调用stepBy(1)
向下将调用stepBy(-1)
页面向上将调用stepBy(10)
页面下移将调用stepBy(-10)

另请参阅 stepBy().

[override virtual protected] void QAbstractSpinBox::keyReleaseEvent(QKeyEvent *event)

重实现:QWidget::keyReleaseEvent(QKeyEvent *event).

[protected] QLineEdit *QAbstractSpinBox::lineEdit() const

此函数返回指向旋转框行编辑的指针。

另请参见 setLineEdit()。

[override virtual] QSize QAbstractSpinBox::minimumSizeHint() const

重构属性访问函数:QWidget::minimumSizeHint

[override virtual protected] void QAbstractSpinBox::mouseMoveEvent(QMouseEvent *event)

重实现:QWidget::mouseMoveEvent(QMouseEvent *event).

[override virtual protected] void QAbstractSpinBox::mousePressEvent(QMouseEvent *event)

重实现:QWidget::mousePressEvent(QMouseEvent *event).

[override virtual protected] void QAbstractSpinBox::mouseReleaseEvent(QMouseEvent *event)

重实现:QWidget::mouseReleaseEvent(QMouseEvent *event).

[override virtual protected] void QAbstractSpinBox::paintEvent(QPaintEvent *event)

重实现:QWidget::paintEvent(QPaintEvent *event).

[override virtual protected] void QAbstractSpinBox::resizeEvent(QResizeEvent *event)

重实现:QWidget::resizeEvent(QResizeEvent *event).

[slot] void QAbstractSpinBox::selectAll()

选择自旋框中除前缀和后缀之外的所有文本。

[protected] void QAbstractSpinBox::setLineEdit(QLineEdit *lineEdit)

将自旋框的行编辑设置为lineEdit ,而不是当前的行编辑 widget。lineEdit 不能是nullptr

QAbstractSpinBox 的所有权。lineEdit

如果lineEditQLineEdit::validator() 返回nullptr ,则将在行编辑上设置自旋框的内部验证器。

另请参阅 lineEdit() 。

[override virtual protected] void QAbstractSpinBox::showEvent(QShowEvent *event)

重实现:QWidget::showEvent(QShowEvent *event).

[override virtual] QSize QAbstractSpinBox::sizeHint() const

重构属性访问函数:QWidget::sizeHint

[virtual] void QAbstractSpinBox::stepBy(int steps)

每当用户触发一个步骤时就会调用的虚拟函数。steps 参数表示执行了多少步。例如,按Qt::Key_Down 会触发对stepBy(-1) 的调用,而按Qt::Key_PageUp 会触发对stepBy(10) 的调用。

如果您对QAbstractSpinBox 进行子类化,则必须重新实现该函数。请注意,即使结果值超出了最小值和最大值的范围,该函数也会被调用。该函数的职责就是处理这些情况。

另请参阅 stepUp()、stepDown() 和keyPressEvent()。

[slot] void QAbstractSpinBox::stepDown()

下调一行调用此槽类似于调用stepBy(-1);

另请参见 stepBy() 和stepUp()。

[virtual protected] QAbstractSpinBox::StepEnabled QAbstractSpinBox::stepEnabled() const

虚拟函数,用于确定在任何给定时间内上下移动是否合法。

除非 (stepEnabled() &StepUpEnabled)!= 0.

如果打开了包装,默认实现将返回 (StepUpEnabled|StepDownEnabled)。否则,如果值>最小值(),则返回StepDownEnabled ;如果值<最大值(),则返回StepUpEnabled

如果您对QAbstractSpinBox 进行子类化,则需要重新实现该函数。

另请参见 QSpinBox::minimum()、QSpinBox::maximum() 和wrapping()。

[slot] void QAbstractSpinBox::stepUp()

上调一行调用此槽类似于调用stepBy(1);

另请参阅 stepBy() 和stepDown()。

[override virtual protected] void QAbstractSpinBox::timerEvent(QTimerEvent *event)

重实现:QObject::timerEvent(QTimerEvent *event).

[virtual] QValidator::State QAbstractSpinBox::validate(QString &input, int &pos) const

QAbstractSpinBox 调用此虚函数,以确定input 是否有效。pos 参数表示字符串中的位置。在各种子类中重新实现。

[override virtual protected] void QAbstractSpinBox::wheelEvent(QWheelEvent *event)

重实现:QWidget::wheelEvent(QWheelEvent *event).

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.