I need to implement a QSpinBox
control which should be able to process int64
values as it's minimum & maximum values. Current implementation only supports int32
values.
End of the day my QSpinBox
should accept any value between
9223372036854775807 and -9223372036854775808
What do I need to do, if I'm to achieve this by subclassing QAbstractSpinbox
?
- Derive from
QAbstractSpinBox
. - Add a
QValidator
to theQLineEdit
to only allow valid int64 values. - Add a property called
value
to provide access to the int64 member that actually holds the value. - Reimplment
stepBy(int steps)
to modify the number. - Implement the methods and properties specific to
QSpinBox
that you are interested in (minimum/maximum limits, prefix, suffix, etc).
Essentially you are maintaining two states: one is the actual int64 value, the other is the text held by the QLineEdit
. Usually this is just updated by:
lineEdit()->setText(QString::number(myNumber));
But it will have to be tweaked slightly if the user wants a prefix or suffix.
来源:https://stackoverflow.com/questions/15654769/how-to-subclass-qspinbox-so-it-could-have-int64-values-as-maxium-and-minimum