11

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

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

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

4

1 回答 1

15
  1. 源自QAbstractSpinBox.
  2. 将 a 添加QValidatorQLineEdit仅允许有效的 int64 值。
  3. 添加一个名为的属性value,以提供对实际保存该值的 int64 成员的访问。
  4. 重新stepBy(int steps)实现修改数量。
  5. 实现特定于您感兴趣的方法和属性QSpinBox(最小/最大限制、前缀、后缀等)。

本质上,您要维护两种状态:一种是实际的 int64 值,另一种是QLineEdit. 通常这只是通过以下方式更新:

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

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

于 2013-03-27T09:13:07.493 回答