QSpinBox Class
QSpinBox类提供了一个数字调整框小部件。
Header | #include < QSpinBox > |
---|---|
qmake | QT += widgets |
Inherits | QAbstractSpinBox |
Inherited By |
详细说明
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,如果wrapping() 设置为true,则单击“up”将得到0。如果需要循环行为,请使用setWrapping() 。
所显示的值可以在前面加上表示货币或度量单位的任意字符串。请参见setPrefix() 和setSuffix() 。数字调整框中的文本使用text() (包括任何prefix() 和suffix() )检索,或使用cleanText() (没有prefix() 、suffix() 和前导或尾随空格)。
除了数值范围之外,通常还需要给用户一个特殊的(通常是默认的)选择。有关如何使用QSpinBox执行此操作的信息,请参见setSpecialValueText() 。
Subclassing 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);
}
- 有关完整的源代码,请参见图标示例【 Icons example】
属性
-
cleanText: const QString 数字调整框的文本,不包括任何前缀、后缀、前导或尾随空格
Access functions:
- QString cleanText() const
-
displayIntegerBase: int 显示数字调整框值的进制
默认的displayIntegerBase值是10。Access functions:
- int displayIntegerBase() const
- void setDisplayIntegerBase(int base)
-
maximum: int 简略
- int maximum() const
- void setMaximum(int max)
-
minimum: int 简略
- int minimum() const
- void setMinimum(int min)
-
prefix: QString 简略
- QString prefix() const
- void setPrefix(const QString &prefix)
-
singleStep: int 简略
- int singleStep() const
- void setSingleStep(int val)
-
stepType: StepType 简略
- QAbstractSpinBox::StepType stepType() const
- void setStepType(QAbstractSpinBox::StepType stepType)
-
suffix: QString 简略
- QString suffix() const
- void setSuffix(const QString &suffix)
-
value: int 简略
Access functions:
- int value() const
- void setValue(int val)
Notifier signal:
- void valueChanged(int i)
公共函数
构造和析构
- QSpinBox(QWidget *parent = nullptr)
- virtual ~QSpinBox()
属性相关
- QString cleanText() const
- int displayIntegerBase() const
- void setDisplayIntegerBase(int base)
- int maximum() const
- void setMaximum(int max)
- int minimum() const
- void setMinimum(int min)
- QString prefix() const
- void setPrefix(const QString &prefix)
- int singleStep() const
- void setSingleStep(int val)
- QAbstractSpinBox::StepType stepType() const
- void setStepType(QAbstractSpinBox::StepType stepType)
- QString suffix() const
- void setSuffix(const QString &suffix)
- int value() const
特殊
- void setRange(int minimum, int maximum)
公共槽
- 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