Qt入门系列开发教程【基础控件篇】QSpinBox旋转框

举报
鱼酱 发表于 2022/02/25 09:41:12 2022/02/25
【摘要】 描述QSpinBox 旨在处理整数和离散值集(例如,月份名称);将 QDoubleSpinBox 用于浮点值。QSpinBox 允许用户通过单击向上/向下按钮或按键盘上的向上/向下键来增加/减少当前显示的值。用户也可以手动输入值。旋转框支持整数值,但可以通过 validate()、textFromValue() 和 valueFromText() 扩展为使用不同的字符串。每次值更改时,QS...

描述

在这里插入图片描述

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
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。