QSpinBox 类

QSpinBox 类提供了旋钮小部件。 更多...

头文件 #include <QSpinBox>
CMakefind_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmakeQT += widgets
继承自 QAbstractSpinBox

属性

公共函数

QSpinBox(QWidget *parent = nullptr)
virtual~QSpinBox()
QStringcleanText() const
intdisplayIntegerBase() const
intmaximum() const
intminimum() const
QStringprefix() const
voidsetDisplayIntegerBase(int base)
voidsetMaximum(int max)
voidsetMinimum(int min)
voidsetPrefix(const QString &prefix)
voidsetRange(int minimum, int maximum)
voidsetSingleStep(int val)
voidsetStepType(QAbstractSpinBox::StepType stepType)
voidsetSuffix(const QString &suffix)
intsingleStep() const
QAbstractSpinBox::StepTypestepType() const
QStringsuffix() const
intvalue() const

公共槽

voidsetValue(int val)

信号

voidtextChanged(const QString &text)
voidvalueChanged(int i)

保护函数

virtual QStringtextFromValue(int value) const
virtual intvalueFromText(const QString &text) const

重新实现了受保护函数

virtual bool事件(QEvent *event) override
virtual voidfixup(QString &input) const override
virtual QValidator::Statevalidate(QString &text, int &pos) const override

详细描述

QSpinBox用于处理整数和离散值集(如月份名称;使用QDoubleSpinBox处理浮点数)。

QSpinBox允许用户通过点击上下按钮或按键盘上的上下键来增加或减少当前显示的值。用户还可以手动输入值。自旋框支持整数值,但可以通过validate()、textFromValue() 和 valueFromText() 扩展为使用不同的字符串。

每次值发生变化时,QSpinBox都会发出valueChanged() 和 textChanged() 信号,前者提供了 int,后者提供 QStringtextChanged() 信号提供带有prefix() 和 suffix() 的值。当前值可以通过value() 获取,并使用 setValue() 设置。

点击上下按钮或使用键盘快捷键的上箭头和下箭头将在大小为 singleStep() 的步长内增加或减少当前值。如果您想改变这种行为,可以重写虚拟函数stepBy。最小值、最大值和步长可以通过其中一个构造函数设置,也可以使用 setMinimum()、setMaximum() 和 setSingleStep() 在以后修改。

大多数自旋框都是方向性的,但QSpinBox也可以作为一个循环自旋框运行,即当范围为0-99且当前值为99时,如果设置 wrapping() 为 true,点击“上”键将返回0。如果您想使用循环行为,请使用 setWrapping()。

显示的值可以前缀和后缀任意字符串,例如货币或度量单位。请参阅 setPrefix() 和 setSuffix()。自旋框中的文本可以通过 text()(包括任何prefix() 和 suffix())检索,或者通过 cleanText()(它没有prefix(),没有 suffix() 以及前导或尾部空白)检索。

通常希望用户除了数值范围外还能选择特殊(通常是默认)的选项。请参阅 setSpecialValueText() 来了解如何在QSpinBox中使用这种方法。

子类化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);
}

另请参阅

属性文档

[只读] cleanText : const QString

此属性包含旋转框中的文本,不包括任何前缀、后缀或前导和尾随空白。

访问函数

QStringcleanText() const

另请参阅 textQSpinBox::prefixQSpinBox::suffix

displayIntegerBase : int

此属性包含使用于显示旋转框值的基础。

默认的displayIntegerBase值是10。

访问函数

intdisplayIntegerBase() const
voidsetDisplayIntegerBase(int base)

另请参阅 textFromValue() 和 valueFromText

maximum : int

此属性包含旋转框的最大值。

设置此属性时,如果需要,会调整最小值,以确保范围有效。

默认的最大值是99。

访问函数

intmaximum() const
voidsetMaximum(int max)

另请参阅 setRange() 和 specialValueText

minimum : int

此属性包含旋转框的最小值。

设置此属性时,如果需要,会调整最大值,以确保范围有效。

默认的最小值是0。

访问函数

intminimum() const
voidsetMinimum(int min)

另请参阅 setRange() 和 specialValueText

prefix : QString

此属性包含旋转框的前缀。

前缀被添加到显示值的开始处。典型用法是显示测量单位或货币符号。例如

sb->setPrefix("$");

要关闭前缀的显示,将此属性设置为空字符串。默认没有前缀。当value() == minimum()且specialValueText()被设置时,不显示前缀。

如果没有设置前缀,则prefix()返回空字符串。

访问函数

QStringprefix() const
voidsetPrefix(const QString &prefix)

另请参阅 suffixsetSuffixspecialValueTextsetSpecialValueText

singleStep : int

此属性包含步长值。

当用户使用箭头更改旋转框的值时,值将增加/减少单步的量。默认值为1。设置单步值小于0将不起作用。

访问函数

intsingleStep() const
voidsetSingleStep(int val)

stepType : StepType

此属性包含步长类型。

步进类型可以是单步或自适应小数步进。

访问函数

QAbstractSpinBox::StepTypestepType() const
voidsetStepType(QAbstractSpinBox::StepType stepType)

suffix : QString

此属性包含旋钮的后缀

后缀被添加到显示值的末尾。典型用途是显示测量单位或货币符号。例如

sb->setSuffix(" km");

要关闭后缀显示,请将此属性设置为空字符串。默认情况下没有后缀。如果设置了 minimum() 且 specialValueText() 被设置,则不会显示 minimum() 的后缀。

如果没有设置后缀,suffix() 返回空字符串。

访问函数

QStringsuffix() const
voidsetSuffix(const QString &suffix)

另请参阅 prefix(),setPrefix(),specialValueText() 和 setSpecialValueText().

value : int

此属性包含旋钮的值

如果新值与旧值不同,setValue() 将发出 valueChanged()。值属性有一个包含旋钮的前缀和后缀的第二个通知信号。

访问函数

intvalue() const
voidsetValue(int val)

通知信号

voidvalueChanged(int i)

成员函数文档

[显式] QSpinBox::QSpinBox(QWidget *parent = nullptr)

构建一个步进框,最小值为 0,最大值为 99,步进值为 1。初始值设置为 0。其父对象是 parent

另请参阅 setMinimum(),setMaximum() 和 setSingleStep().

[虚拟 noexcept] QSpinBox::~QSpinBox()

析构函数。

[覆盖虚拟受保护] bool QSpinBox::event(QEvent *event)

重新实现:QAbstractSpinBox::event(QEvent *event).

[覆盖虚拟受保护] void QSpinBox::fixup(QString &input) const

重新实现:QAbstractSpinBox::fixup(QString &input) const.

void QSpinBox::setRange(int minimum, int maximum)

通过单个函数调用设置 minimummaximum 的便利函数。

setRange(minimum, maximum);

等价于

setMinimum(minimum);
setMaximum(maximum);

另请参阅 minimummaximum.

void QSpinBox::setStepType(QAbstractSpinBox::StepType stepType)

将步进框的步进类型设置为 stepType,它是单步或自适应小数步进。

自适应步长意味着步长将持续调整为当前值下方的一个十的幂。因此,当值为1100时,步长设置为100,所以增加一次将其增加到1200。对于1200,增加将其变为1300。对于负值,从-1100向下减去变为-1200。

为了处理边界情况,会考虑步长的方向,因此从100向下减去将值变为99而不是90。因此,先增加后减少或者相反操作,总会回到起点值;99 -> 100 -> 99。

设置此选项将导致微调框忽略单步值singleStep,尽管它被保留,以便在稍后关闭自适应步长时singleStep生效。

注意:属性stepType的设置器函数。

另请参阅:stepType

[signal] void QSpinBox::textChanged(const QString &text)

每当微调框的文本更改时,都会发出此信号。新的文本作为text通过prefix()和suffix()传递。

[virtual protected] QString QSpinBox::textFromValue(int value) const

此虚函数用于微调框在需要显示给定value时。默认实现返回一个使用QWidget::locale().toString()以标准方式打印的value字符串,但除非设置了setGroupSeparatorShown(),否则将移除千位分隔符。重写可能会返回任何内容。(请参阅详细说明中的示例。)

注意:QSpinBox不为此调用函数specialValueText(),并且 neither prefix() nor 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

[signal] void QSpinBox::valueChanged(int i)

每当微调框的值更改时,都会发出此信号。新值的整数值作为i传递。

注意:value属性的更新器信号。

[virtual protected] int QSpinBox::valueFromText(const QString &text) const

此虚拟函数用于旋转框在需要将用户输入的文本解释为值时调用。

需要以非数值方式显示旋转框值的子类需要重写此函数。

注意:`QSpinBox`单独处理`specialValueText()`;此函数仅关注其他值。

另请参阅 `textFromValue()` 和 `validate()`。

© 2024 Qt公司 Ltd。本文档的贡献权归各自所有者所有。本文档是根据自由软件基金会发布的GNU自由文档许可第1.3版许可的。Qt及其相关标志是芬兰及其它全球国家的《Qt公司 Ltd.商标》。