文章目录
QAbstractSpinBox Class
QAbstractSpinBox类提供了一个选择框和一个行编辑来显示值。
Header | #include < QAbstractSpinBox > |
---|---|
qmake | QT += widgets |
Inherits | QWidget |
Inherited By | QDateTimeEdit, QDoubleSpinBox, and QSpinBox |
详细说明
该类被设计为QSpinBox、QDoubleSpinBox和QDateTimeEdit等小部件的通用超类。
以下是类的主要属性:
- text: QAbstractSpinBox中显示的文本。
- alignment:QAbstractSpinBox中文本的对齐方式。
- 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
此枚举类型描述可以在数字调整框中的按钮上显示的符号。
Constant | Value | Description |
---|---|---|
UpDownArrows | 0 | 经典风格的小箭头。 |
PlusMinus | 1 | +和-符号。 |
NoButtons | 2 | 不显示按钮。 |
enum CorrectionMode
此枚举类型描述在编辑完成时spinbox将用于更正中间值的模式。
Constant | Value | Description |
---|---|---|
CorrectToPreviousValue | 0 | spinbox将还原为最后一个有效值。 |
CorrectToNearestValue | 1 | spinbox将还原为最接近的有效值。 |
enum StepEnabledFlag
flags StepEnabled
Constant | Value |
---|---|
StepNone | 0x00 |
StepUpEnabled | 0x01 |
StepDownEnabled | 0x02 |
enum StepType
Constant | Value |
---|---|
DefaultStepType | 0 |
AdaptiveDecimalStepType | 1 |
属性
-
accelerated: bool 在按下“向上/向下步进”按钮时数字调整框是否会加快步进频率
如果启用,按住按钮的时间越长,数字调整框将更快地增加/减少值。Access functions:
- bool isAccelerated() const
- void setAccelerated(bool on)
-
acceptableInput: const bool 输入是否满足当前验证
Access functions:
- bool hasAcceptableInput() const
-
alignment: Qt::Alignment 数字调整框的对齐方式
可能的值有Qt::AlignLeft、Qt::AlignRight和Qt::AlignHCenter。
默认情况下,为Qt::AlignLeft
尝试将对齐方式设置为非法的标志组合不会产生任何效果。Access functions:
-
Qt::Alignment alignment() const
-
void setAlignment(Qt::Alignment flag)
-
参考:Qt::Alignment
-
-
buttonSymbols: ButtonSymbols 当前按钮符号模式
可能的值可以是上下箭头或PlusMinus。默认设置为上下箭头。
请注意,某些样式可能会以相同的方式呈现PlusMinus和UpDownArrows。Access functions:
- QAbstractSpinBox::ButtonSymbols buttonSymbols() const
- void setButtonSymbols(QAbstractSpinBox::ButtonSymbols bs)
-
correctionMode: CorrectionMode 编辑完成时更正中间值的模式
Access functions:
- QAbstractSpinBox::CorrectionMode correctionMode() const
- void setCorrectionMode(QAbstractSpinBox::CorrectionMode cm)
-
frame: bool 数字调整框是否使用框架绘制自身
如果启用(默认设置),数字调整框将在帧内绘制自身,否则数字调整框将在没有任何帧的情况下绘制自身。Access functions:
-
bool hasFrame() const
-
void setFrame(bool)
-
-
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)
-
readOnly: bool 数字调整框是否为只读
在只读模式下,用户仍然可以将文本复制到剪贴板,或拖放文本;但不能编辑文本。
QAbstractSpinBox中的QLineEdit在只读模式下不显示光标。Access functions:
- bool isReadOnly() const
- void setReadOnly(bool r)
-
showGroupSeparator: bool 是否启用了千位分隔符
默认情况下,此属性为false。Access functions:
-
bool isGroupSeparatorShown() const
-
void setGroupSeparatorShown(bool shown)
-
-
specialValueText: QString 特殊值文本
如果设置,每当当前值等于minimum() 时,数字调整框将显示此文本而不是数字值。典型的用法是表示此选项具有特殊(默认)含义。例如,如果数字调整框允许用户选择用于显示图像的比例因子(或缩放级别),并且应用程序能够自动选择一个使图像完全适合显示窗口的比例因子,则可以如下设置数字调整框:
Access functions:
- QString specialValueText() const
- void setSpecialValueText(const QString &txt)
-
text: const QString 数字调整框的文本,包括任何前缀和后缀
没有默认文本。Access functions:
- QString text() const
-
wrapping: bool 确定数字调整框是否为环形
如果wrapping为true,则从maximum() 值递增将带您到minimum() 值,反之亦然。只有在设置了minimum() 和maximum() 值时,包装才有意义。Access functions:
- bool wrapping() const
- void setWrapping(bool w)
公共函数
构造和析构
- QAbstractSpinBox(QWidget *parent = nullptr)
- virtual ~QAbstractSpinBox()
属性相关
- bool isAccelerated() const
- void setAccelerated(bool on)
- bool hasAcceptableInput() const
- Qt::Alignment alignment() const
- void setAlignment(Qt::Alignment flag)
- QAbstractSpinBox::ButtonSymbols buttonSymbols() const
- void setButtonSymbols(QAbstractSpinBox::ButtonSymbols bs)
- QAbstractSpinBox::CorrectionMode correctionMode() const
- void setCorrectionMode(QAbstractSpinBox::CorrectionMode cm)
- bool hasFrame() const
- void setFrame(bool)
- bool keyboardTracking() const
- void setKeyboardTracking(bool kt)
- bool isReadOnly() const
- void setReadOnly(bool r)
- bool isGroupSeparatorShown() const
- void setGroupSeparatorShown(bool shown)
- QString specialValueText() const
- void setSpecialValueText(const QString &txt)
- QString text() const
- bool wrapping() const
- void setWrapping(bool w)
特殊
-
virtual void fixup(QString &input) const 尝试更改文本以使其有效
如果按下Return或调用interpretatText() 时输入未验证为QValidator::Acceptable,则QAbstractSpinBox将调用此虚拟函数。它将尝试更改文本以使其有效。在不同的子类中重新实现。
-
void interpretText() 此函数用于解释数字调整框的文本
如果值自上次解释后发生变化,它将发出信号。 -
virtual void stepBy(int steps) 每当用户触发一个步骤时调用的虚函数
steps参数指示执行了多少步。例如,按下Qt::Key_Down将触发对stepBy(-1)的调用,而按下Qt::Key_PageUp将触发对stepBy(10)的调用。
如果将QAbstractSpinBox子类化,则必须重新实现此函数。请注意,即使结果值超出最小值和最大值的界限,也会调用此函数。这个函数的工作就是处理这些情况。
-
virtual QValidator::State validate(QString &input, int &pos) const 调用此虚拟函数以确定输入是否有效
pos参数表示字符串中的位置。在不同的子类中重新实现。
重写的公共函数
- 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() 调用这个插槽类似于调用stepBy(-1)
- void stepUp() 调用这个插槽类似于调用stepBy(1)
信号
-
void editingFinished() 当编辑完成时,发出该信号。
当spinbox失去焦点并且按下enter键时,会发生这种情况。
受保护的函数
- 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
参考
- Spin Boxes Example