QSpinBox 类提供自旋框 Widget。 更多...
头: | #include <QSpinBox> |
qmake: | QT += widgets |
继承: | QAbstractSpinBox |
|
|
QSpinBox (QWidget * parent = nullptr) | |
virtual | ~QSpinBox () |
QString | cleanText () const |
int | displayIntegerBase () const |
int | maximum () const |
int | minimum () const |
QString | prefix () const |
void | setDisplayIntegerBase (int base ) |
void | setMaximum (int max ) |
void | setMinimum (int min ) |
void | setPrefix (const QString & prefix ) |
void | setRange (int minimum , int maximum ) |
void | setSingleStep (int val ) |
void | setStepType (QAbstractSpinBox::StepType stepType ) |
void | setSuffix (const QString & suffix ) |
int | singleStep () const |
QAbstractSpinBox::StepType | stepType () const |
QString | suffix () const |
int | value () const |
void | setValue (int val ) |
void | textChanged (const QString & text ) |
void | valueChanged (int i ) |
virtual QString | textFromValue (int value ) const |
virtual int | valueFromText (const QString & text ) const |
virtual bool | event (QEvent * event ) override |
virtual void | fixup (QString & input ) const override |
virtual QValidator::State | validate (QString & text , int & pos ) const override |
QSpinBox 旨在处理整数和离散值的集 (如:月份名);使用 QDoubleSpinBox 为浮点值。
QSpinBox 允许用户通过点击向上/向下按键 (或按下键盘向上/向下键) 以递增 (或递减) 目前显示值来选择值。用户还可以手动键入值。自旋框支持整数值,但可以扩展到使用不同字符串采用 validate (), textFromValue () 和 valueFromText ().
每当值改变 QSpinBox 会发射 valueChanged () 和 textChanged () 信号,前者提供 int 而后者提供 QString 。 textChanged () 信号提供的值具有两者 prefix () 和 suffix ()。可以抓取当前值采用 value () 和设置采用 setValue ().
点击向上/向下按钮 (或使用键盘加速键的向上和向下箭头) 将递增 (或递减) 当前值,按步幅大小 singleStep ()。若想要改变此行为,可以重实现虚函数 stepBy ()。最小和最大值及步幅大小的设置可以使用某个构造函数,且稍后可以改变采用 setMinimum (), setMaximum () 和 setSingleStep ().
大多数自旋框有方向性,但 QSpinBox 还可以作为循环自旋框运转,即,若范围为 0-99 且当前值为 99,点击 Up 将给出 0 若 wrapping () 被设为 true。使用 setWrapping () 若想要循环行为。
可以为显示值前置和追加任意字符串指示,例如,货币 (或度量单位)。见 setPrefix () 和 setSuffix ()。自旋框文本的检索是采用 text () (包括任何 prefix () 和 suffix ()),或采用 cleanText () (没有 prefix (),没有 suffix () 且没有前导或结尾空白)。
经常期望对用户给出特殊 (常常默认) 选择,除数值范围外。见 setSpecialValueText () 了解如何采用 QSpinBox 做到这。
若使用 prefix (), suffix (),和 specialValueText (),不提供足够控制,可以子类化 QSpinBox 并重实现 valueFromText () 和 textFromValue ()。例如,这里是允许用户录入图标大小 (如 32 x 32),用于自定义自旋框的代码:
int IconSizeSpinBox::valueFromText(const QString &text) const { static const QRegularExpression regExp(tr("(\\d+)(\\s*[xx]\\s*\\d+)?")); Q_ASSERT(regExp.isValid()); const QRegularExpressionMatch match = regExp.match(text); if (match.isValid()) return match.captured(1).toInt(); return 0; } QString IconSizeSpinBox::textFromValue(int value) const { return tr("%1 x %1").arg(value); }
见 图标 范例了解完整源代码。
另请参阅 QDoubleSpinBox , QDateTimeEdit , QSlider ,和 自旋框范例 .
此特性保持自旋框的文本,不包括任何前缀、后缀、或前导/结尾空白。
访问函数:
QString | cleanText () const |
另请参阅 text , QSpinBox::prefix ,和 QSpinBox::suffix .
此特性保持用于显示自旋框值的基
默认 displayIntegerBase 值为 10。
该特性在 Qt 5.2 引入。
访问函数:
int | displayIntegerBase () const |
void | setDisplayIntegerBase (int base ) |
另请参阅 textFromValue () 和 valueFromText ().
此特性保持自旋框的最大值
当设置此特性时,最小有必要调节,以确保范围仍然有效。
默认最大值为 99。
访问函数:
int | maximum () const |
void | setMaximum (int max ) |
另请参阅 setRange () 和 specialValueText .
此特性保持自旋框的最小值
当设置此特性 maximum 有必要调节,以确保范围仍然有效。
默认最小值为 0。
访问函数:
int | minimum () const |
void | setMinimum (int min ) |
另请参阅 setRange () 和 specialValueText .
此特性保持自旋框的前缀
前缀会前置到显示值开头。典型用途是显示度量单位 (或货币符号)。例如:
sb->setPrefix("$");
要关闭前缀显示,把此特性设为空字符串。默认为无前缀。前缀不显示,当 value () == minimum () 和 specialValueText () 有设置。
prefix() 返回空字符串,若未设置前缀。
访问函数:
QString | prefix () const |
void | setPrefix (const QString & prefix ) |
另请参阅 suffix (), setSuffix (), specialValueText (),和 setSpecialValueText ().
此特性保持步幅值
当用户使用箭头改变自旋框值时,值将按 singleStep 数量递增/递减。默认值为 1。将 singleStep 值设为小于 0,什么都不做。
访问函数:
int | singleStep () const |
void | setSingleStep (int val ) |
此特性保持步幅类型。
步幅类型可以是单步幅,或自适应十进制步幅。
访问函数:
QAbstractSpinBox::StepType | stepType () const |
void | setStepType (QAbstractSpinBox::StepType stepType ) |
此特性保持自旋框的后缀
后缀会被追加到显示值末尾。典型用法是显示度量单位 (或货币符号)。例如:
sb->setSuffix(" km");
要关闭后缀显示,将此特性设为空字符串。默认无后缀。后缀不显示对于 minimum () 若 specialValueText () 有设置。
若未设置后缀,suffix() 返回空字符串。
访问函数:
QString | suffix () const |
void | setSuffix (const QString & suffix ) |
另请参阅 prefix (), setPrefix (), specialValueText (),和 setSpecialValueText ().
此特性保持自旋框的值
setValue() 将发射 valueChanged () 若新值不同于旧值。值特性拥有第 2 通知信号,其中包括自旋框前缀和后缀。
访问函数:
int | value () const |
void | setValue (int val ) |
通知程序信号:
void | valueChanged (int i ) |
构造自旋框采用 0 作为最小值和 99 作为最大值,步幅值 1。初始值被设为 0。父级为 parent .
另请参阅 setMinimum (), setMaximum (),和 setSingleStep ().
[signal]
void
QSpinBox::
textChanged
(const
QString
&
text
)
此信号被发射每当自旋框文本改变时。新文本被传入 text with prefix () 和 suffix ().
该函数在 Qt 5.14 引入。
[signal]
void
QSpinBox::
valueChanged
(
int
i
)
此信号被发射,每当自旋框值改变时。新值的整数值会被传入 i .
注意: 通知程序信号对于特性 value .
注意: 信号 valueChanged 在此类中被重载。通过使用函数指针句法连接到此信号,Qt 提供用于获得如此范例展示的函数指针的方便帮助程序:
connect(spinBox, QOverload<int>::of(&QSpinBox::valueChanged), [=](int i){ /* ... */ });
[虚拟]
QSpinBox::
~QSpinBox
()
析构函数。
[override virtual protected]
bool
QSpinBox::
event
(
QEvent
*
event
)
重实现: QAbstractSpinBox::event (QEvent *event).
[override virtual protected]
void
QSpinBox::
fixup
(
QString
&
input
) const
重实现: QAbstractSpinBox::fixup (QString &input) const.
方便函数能设置 minimum ,和 maximum 值采用单函数调用。
setRange(minimum, maximum);
相当于:
setMinimum(minimum); setMaximum(maximum);
将用于自旋框的步幅类型设为 stepType ,其是单步幅或自适应十进制步幅。
自适应十进制步幅,意味着会连续调节步幅大小到十次方之一小于当前 value 。因此当值为 1100 时,步幅被设为 100,所以向上步进一次会递增到 1200。对于 1200,向上步进会到 1300。对于负值,向下步进会从 -1100 到 -1200。
考虑步进方向来处理边缘情况,所以从 100 向下步进值到 99 而不是 90。这样,向上步进紧接着向下步进 -- 反之亦然 -- 始终落在起始值上;99 -> 100 -> 99。
设置此值将导致自旋框无视值 singleStep ,虽然它有保留以便 singleStep 能生效,若自适应十进制步幅稍后被关闭。
注意: setter 函数对于特性 stepType .
该函数在 Qt 5.12 引入。
另请参阅 stepType ().
[virtual protected]
QString
QSpinBox::
textFromValue
(
int
value
) const
此虚函数用于自旋框,每当它需要显示给定 value 。默认实现返回的字符串包含 value 会以标准方式打印使用 QWidget::locale ().toString(),但会移除千位分隔符,除非 setGroupSeparatorShown () 有设置。重实现可以返回任何内容 (见详细描述中的范例)。
注意: QSpinBox 不会调用此函数对于 specialValueText () 且 prefix () 或 suffix () 应包括在返回值中。
若重实现这,还可能需要重实现 valueFromText () 和 validate ()
另请参阅 valueFromText (), validate (),和 QLocale::groupSeparator ().
[override virtual protected]
QValidator::State
QSpinBox::
validate
(
QString
&
text
,
int
&
pos
) const
重实现: QAbstractSpinBox::validate (QString &input, int &pos) const.
[virtual protected]
int
QSpinBox::
valueFromText
(const
QString
&
text
) const
此虚函数用于自旋框,每当它需要解释 text 由用户作为值键入。
需要以非数字方式显示自旋框值的子类,需要重实现此函数。
注意: QSpinBox 处理 specialValueText () 单独;此函数只关心其它值。
另请参阅 textFromValue () 和 validate ().