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

war*_*anc 11 qt qspinbox

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

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

如果我要通过子类化实现这一目标,我还需要做QAbstractSpinbox什么?

cma*_*t85 12

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

基本上你维持两种状态:一种是实际的int64值,另一种是由持有的文本QLineEdit.通常这只是通过以下方式更新:

lineEdit()->setText(QString::number(myNumber));
Run Code Online (Sandbox Code Playgroud)

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

  • @ed因为只有52个尾数位.请参见此处:http://stackoverflow.com/questions/1848700/biggest-integer-that-c​​an-be-stored-in-a-double (5认同)
  • 这就是它的样子. (2认同)