描述
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,则单击“向上”将给出 0。如果您想要循环行为,请使用 setWrapping()。
显示的值可以添加任意字符串,例如货币或计量单位。请参阅 setPrefix() 和 setSuffix()。旋转框中的文本使用 text()(包括任何 prefix() 和 suffix())或 cleanText()(没有 prefix()、suffix() 并且没有前导或尾随空格)检索。
除了数值范围之外,通常还需要给用户一个特殊的(通常是默认的)选择。有关如何使用 QSpinBox 执行此操作,请参阅 setSpecialValueText()。
如果使用 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);
}
API
//清除文本
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