QAbstractSpinBox 类

The QAbstractSpinBox class provides a spinbox and a line edit to display values. 更多...

头: #include <QAbstractSpinBox>
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 ()

信号

void editingFinished ()

静态公共成员

const QMetaObject staticMetaObject

保护函数

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

额外继承成员

详细描述

The QAbstractSpinBox class provides a spinbox and a line edit to display values.

此类被设计作为 Widget 的通用超类像 QSpinBox , QDoubleSpinBox and QDateTimeEdit

这里是类的主要特性:

  1. text : The text that is displayed in the QAbstractSpinBox .
  2. alignment : The alignment of the text in the QAbstractSpinBox .
  3. wrapping : Whether the QAbstractSpinBox wraps from the minimum value to the maximum value and vice versa.

QAbstractSpinBox provides a virtual stepBy () 函数被调用每当用户触发步进时。此函数接受表示已走了多少步的整数值。如:按下 Qt::Key_Down 将触发调用 stepBy (-1).

当用户触发步进时的同时按住 Qt::ControlModifier , QAbstractSpinBox steps by 10 instead of making a single step. This step modifier affects wheel events, key events and interaction with the spinbox buttons. Note that on macOS , Control corresponds to the Command key.

从 Qt 5.12 起, QStyle::SH_SpinBox_StepModifier 可以用来选择 Qt::KeyboardModifier 递增步幅速率。 Qt::NoModifier 禁用此特征。

QAbstractSpinBox also provide a virtual function stepEnabled () 以确定在任何时候是否允许向上/向下步进。此函数返回位集的 StepEnabled .

另请参阅 QAbstractSlider , QSpinBox , QDoubleSpinBox , QDateTimeEdit ,和 自旋框范例 .

成员类型文档编制

enum QAbstractSpinBox:: ButtonSymbols

此枚举类型描述可以在自旋框按钮中显示的符号。

常量 描述
QAbstractSpinBox::UpDownArrows 0 经典风格小箭头。
QAbstractSpinBox::PlusMinus 1 + and - 符号。
QAbstractSpinBox::NoButtons 2 不显示按钮。

另请参阅 QAbstractSpinBox::buttonSymbols .

enum QAbstractSpinBox:: CorrectionMode

此枚举类型描述的自旋框模式用于校正 中间体 值若编辑完成。

常量 描述
QAbstractSpinBox::CorrectToPreviousValue 0 自旋框将恢复到最后有效值。
QAbstractSpinBox::CorrectToNearestValue 1 自旋框将恢复到最近有效值。

另请参阅 correctionMode .

enum QAbstractSpinBox:: StepEnabledFlag
flags QAbstractSpinBox:: StepEnabled

常量
QAbstractSpinBox::StepNone 0x00
QAbstractSpinBox::StepUpEnabled 0x01
QAbstractSpinBox::StepDownEnabled 0x02

StepEnabled 类型是 typedef 对于 QFlags <StepEnabledFlag>。它存储 StepEnabledFlag 值的 OR 组合。

enum QAbstractSpinBox:: StepType

常量
QAbstractSpinBox::DefaultStepType 0
QAbstractSpinBox::AdaptiveDecimalStepType 1

特性文档编制

accelerated : bool

此特性保持自旋框是否会增加步进的频率,当按下向上/向下步进按钮时。

若启用,自旋框会更快地递增/递减值,当按下按钮时间越长时。

该特性在 Qt 4.2 引入。

访问函数:

bool isAccelerated () const
void setAccelerated (bool on )

acceptableInput : const bool

此特性保持输入是否满足当前验证

该特性在 Qt 4.2 引入。

访问函数:

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 or PlusMinus 。默认为 UpDownArrows .

注意:某些风格可能渲染 PlusMinus and UpDownArrows 同等。

访问函数:

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

另请参阅 ButtonSymbols .

correctionMode : CorrectionMode

此特性保持的模式用于校正 中间体 值若编辑完成

默认模式为 QAbstractSpinBox::CorrectToPreviousValue .

该特性在 Qt 4.2 引入。

访问函数:

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

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

frame : bool

此特性保持自旋框是否采用框架绘制自身

若启用 (默认),自旋框在框架内绘制自身,否则自旋框在没有任何框架的情况下绘制自身。

访问函数:

bool hasFrame () const
void setFrame ( bool )

keyboardTracking : bool

此特性保持是否为自旋框启用键盘跟踪。

If keyboard tracking is enabled (the default), the spinbox emits the valueChanged() signal while the new value is being entered from the keyboard.

如:当用户通过键入 6, 0 和 0 输入值 600 时,自旋框会分别发射 6, 60 和 600 3 个信号。

If keyboard tracking is disabled, the spinbox doesn't emit the valueChanged() signal while typing. It emits the signal later, when the return key is pressed, when keyboard focus is lost, or when other spinbox functionality is used, e.g. pressing an arrow key.

该特性在 Qt 4.3 引入。

访问函数:

bool keyboardTracking () const
void setKeyboardTracking (bool kt )

readOnly : bool

此特性保持自旋框是否为只读。

在只读模式下,用户仍可以将文本拷贝到剪贴板,或拖放文本;但无法编辑它。

The QLineEdit QAbstractSpinBox 在只读模式下不展示光标。

访问函数:

bool isReadOnly () const
void setReadOnly (bool r )

另请参阅 QLineEdit::readOnly .

showGroupSeparator : bool

此特性保持是否启用千位分隔符。默认情况下,此特性为 false。

该特性在 Qt 5.3 引入。

访问函数:

bool isGroupSeparatorShown () const
void setGroupSeparatorShown (bool shown )

specialValueText : QString

此特性保持特殊值文本

若设置,自旋框会显示此文本而非数字值,在当前值等于 minimum() 时。典型用途是指示此抉择具有特殊 (默认) 含义。

例如,若自旋框允许用户选取比例因子 (或缩放级别) 为显示图像,且应用程序能够自动选取允许把图像完整拟合在显示窗口中的某一值,就可以像这样设置自旋框:

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

接着,用户将能在 1% 到 1000% 之间选取比例,或选择 Auto 以将其留给应用程序去选取。然后,代码必须把自旋框 0 值解释为来自用户的请求,以缩放图像为拟合在窗口内。

所有被显示值带前缀和后缀 (若有设置), except 为特殊值,仅展示特殊值文本。此特殊文本被传入 QSpinBox::valueChanged () 信号传递 QString .

要关闭特殊值文本显示,调用此函数采用空字符串。默认为无特殊值文本 (即:照常展示数字值)。

specialValueText() 返回空字符串,若未设置特殊值文本。

访问函数:

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

text : const QString

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

没有默认文本。

访问函数:

QString text () const

wrapping : bool

此特性保持自旋框是否循环。

若环绕为 true,从 maximum() 值向上步进会到 minimum() 值,反之亦然。环绕才有意义,若有设置 maximum() 和 minimum() 值。

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 ().

成员函数文档编制

QAbstractSpinBox:: QAbstractSpinBox ( QWidget * parent = nullptr)

构造抽象 Spinbox 采用给定 parent 采用默认 wrapping ,和 alignment 特性。

[虚拟] QAbstractSpinBox:: ~QAbstractSpinBox ()

被调用当 QAbstractSpinBox 被销毁。

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

重实现自 QWidget::changeEvent ().

[virtual slot] void QAbstractSpinBox:: clear ()

清零所有文本的 lineedit,除前缀和后缀外。

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

重实现自 QWidget::closeEvent ().

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

重实现自 QWidget::contextMenuEvent ().

[signal] void QAbstractSpinBox:: editingFinished ()

此信号被发射,当编辑完成时。这会发生,当旋转框丢失聚焦和当按下 Enter 键时。

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

重实现自 QWidget::event ().

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

此虚函数的调用是通过 QAbstractSpinBox input 不验证到 QValidator::Acceptable 当 Return 被按下或 interpretText () 被调用。它将试着改变文本,使其有效。重实现在各子类中。

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

重实现自 QWidget::focusInEvent ().

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

重实现自 QWidget::focusOutEvent ().

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

重实现自 QWidget::hideEvent ().

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

初始化 option 采用值来自此 QSpinBox 。此方法对子类是有用的,当需要 QStyleOptionSpinBox ,但不希望自己填充所有信息。

另请参阅 QStyleOption::initFrom ().

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

重实现自 QWidget::inputMethodQuery ().

void QAbstractSpinBox:: interpretText ()

此函数解释自旋框的文本。若值从上次解释以来已改变,它会发射信号。

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

重实现自 QWidget::keyPressEvent ().

此函数处理键盘输入。

具体处理下列键:

Enter/Return 这会重新解释文本并发射信号,即使从上次发射信号以来值没有改变。
Up 这会援引 stepBy (1)
Down 这会援引 stepBy (-1)
Page up 这会援引 stepBy (10)
Page down 这会援引 stepBy (-10)

另请参阅 stepBy ().

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

重实现自 QWidget::keyReleaseEvent ().

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

此函数返回自旋框行编辑器指针。

另请参阅 setLineEdit ().

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

重实现自 QWidget::minimumSizeHint ().

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

重实现自 QWidget::mouseMoveEvent ().

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

重实现自 QWidget::mousePressEvent ().

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

重实现自 QWidget::mouseReleaseEvent ().

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

重实现自 QWidget::paintEvent ().

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

重实现自 QWidget::resizeEvent ().

[slot] void QAbstractSpinBox:: selectAll ()

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

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

将自旋框的行编辑设为 lineEdit 而不是当前行编辑 Widget。 lineEdit can not be 0.

QAbstractSpinBox 拥有所有权对于新的 lineEdit

QLineEdit::validator () 为 lineEdit 返回 nullptr ,将把自旋框的内部验证器设置在行编辑。

另请参阅 lineEdit ().

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

重实现自 QWidget::showEvent ().

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

重实现自 QWidget::sizeHint ().

[虚拟] 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 若值 > minimum() 或采用 StepUpEnabled 若值 < maximum()。

若子类 QAbstractSpinBox ,将需要重实现此函数。

另请参阅 QSpinBox::minimum (), QSpinBox::maximum (),和 wrapping ().

[slot] void QAbstractSpinBox:: stepUp ()

向上走一步,调用此槽类似于调用 stepBy (1);

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

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

重实现自 QObject::timerEvent ().

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

此虚函数的调用是通过 QAbstractSpinBox 以确定是否 input 有效。 pos 参数以字符串形式指示位置。重实现在各种子类。

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

重实现自 QWidget::wheelEvent ().