Qt 如何对QSpinBox进行子类化,使其具有int64值作为最大值和最小值

Qt 如何对QSpinBox进行子类化,使其具有int64值作为最大值和最小值,qt,qspinbox,Qt,Qspinbox,我需要实现一个QSpinBox控件,它应该能够将int64值作为最小值和最大值进行处理。当前实现仅支持int32值 一天结束时,myQSpinBox应接受介于 9223372036854775807和-9223372036854775808 如果要通过子类化QAbstractSpinbox实现这一点,我需要做什么 从QAbstractSpinBox派生 将QValidator添加到QLineEdit以仅允许有效的int64值 添加名为value的属性,以提供对实际持有该值的int64成员的访问

我需要实现一个
QSpinBox
控件,它应该能够将
int64
值作为最小值和最大值进行处理。当前实现仅支持
int32

一天结束时,my
QSpinBox
应接受介于 9223372036854775807和-9223372036854775808

如果要通过子类化
QAbstractSpinbox
实现这一点,我需要做什么

  • QAbstractSpinBox
    派生
  • QValidator
    添加到
    QLineEdit
    以仅允许有效的int64值
  • 添加名为
    value
    的属性,以提供对实际持有该值的int64成员的访问
  • 重新嵌入
    steppy(int steps)
    以修改编号
  • 实现您感兴趣的
    QSpinBox
    特定的方法和属性(最小/最大限制、前缀、后缀等)
  • 实际上,您维护的是两种状态:一种是实际的int64值,另一种是由
    QLineEdit
    保存的文本。通常通过以下方式更新:

    lineEdit()->setText(QString::number(myNumber));
    

    但是,如果用户想要前缀或后缀,则必须稍微调整它。

    谢谢您的回答,但是我如何才能创建验证程序来验证Int64范围,QIntValidator只提供int32?我想我必须对QValidator进行子类化,并创建自己的Int64Validator。这就是它的样子。为什么不使用没有小数的QDoubleSpinbox呢?您不需要从QabStretchSpinBox派生。@e.d.因为双精度只有52个尾数位。请看这里: