如何将QSpinBox子类化,以便它可以将int64值作为最大值和最小值

时间:2013-03-27 08:46:58

标签: qt qspinbox

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

我的QSpinBox应该接受任何值之间的结束 9223372036854775807和-9223372036854775808

如果我要通过继承QAbstractSpinbox来实现这一目标,我需要做什么?

1 个答案:

答案 0 :(得分:12)

  1. QAbstractSpinBox
  2. 派生
  3. QValidator添加QLineEdit以仅允许有效的int64值。
  4. 添加一个名为value的属性,以提供对实际保存该值的int64成员的访问权。
  5. 重新简要stepBy(int steps)修改号码。
  6. 实施您感兴趣的QSpinBox特有的方法和属性(最小/最大限制,前缀,后缀等)。
  7. 基本上你保持两种状态:一种是实际的int64值,另一种是QLineEdit所持有的文本。通常只需更新:

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

    但如果用户需要前缀或后缀,则必须稍微调整一下。