QAbstractSpinBox Class
QAbstractSpinBox 类提供了一个旋转框和行编辑器来显示值。更多
Header: | #include <QAbstractSpinBox> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
继承: | QWidget |
继承于 |
公共类型
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 |
公共插槽
信号
void | editingFinished() |
受保护函数
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 |
详细说明
该类被设计为QSpinBox 、QDoubleSpinBox 和 等部件的通用超类。QDateTimeEdit
以下是该类的主要属性:
- text:在 QAbstractSpinBox 中显示的文本。
- 对齐方式:QAbstractSpinBox 中文本的对齐方式。
- 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,QDateTimeEdit 和Spin Boxes 示例。
成员类型文档
enum QAbstractSpinBox::ButtonSymbols
该枚举类型描述了可在旋转框按钮上显示的符号。
常数 | 值 | 描述 |
---|---|---|
QAbstractSpinBox::UpDownArrows | 0 | 经典样式的小箭头。 |
QAbstractSpinBox::PlusMinus | 1 | +和-符号。 |
QAbstractSpinBox::NoButtons | 2 | 不显示按钮。 |
另请参阅 QAbstractSpinBox::buttonSymbols 。
enum QAbstractSpinBox::CorrectionMode
该枚举类型描述了在编辑结束后,自旋盒将使用何种模式来纠正Intermediate 值。
常量 | 值 | 说明 |
---|---|---|
QAbstractSpinBox::CorrectToPreviousValue | 0 | 自旋盒将恢复到最后一个有效值。 |
QAbstractSpinBox::CorrectToNearestValue | 1 | 自旋盒将恢复到最近的有效值。 |
另请参阅 correctionMode 。
枚举 QAbstractSpinBox::StepEnabledFlag
标志 QAbstractSpinBox::StepEnabled
常量 | 值 |
---|---|
QAbstractSpinBox::StepNone | 0x00 |
QAbstractSpinBox::StepUpEnabled | 0x01 |
QAbstractSpinBox::StepDownEnabled | 0x02 |
StepEnabled 类型是QFlags<StepEnabledFlag> 的类型定义。它存储 StepEnabledFlag 值的 OR 组合。
enum QAbstractSpinBox::StepType
常数 | 值 |
---|---|
QAbstractSpinBox::DefaultStepType | 0 |
QAbstractSpinBox::AdaptiveDecimalStepType | 1 |
属性文件
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
。
请注意,某些样式可能会将PlusMinus 和UpDownArrows 相同呈现。
访问功能:
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
如果lineEdit 的QLineEdit::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);
[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);
[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.