2013-03-27 9 views
10

の値を最小値として&の最大値として処理することができるQSpinBoxコントロールを実装する必要があります。現在の実装では、int32の値しかサポートされていません。その日、私のQSpinBoxmax32と最小値のint64値を持つことができるようにQSpinBoxをサブクラス化する方法

エンドは、私がQAbstractSpinboxをサブクラス化することによって、これを達成するためだ場合、私は、何をする必要がありますどのような 9223372036854775807と-9223372036854775808

の間の任意の値を受け入れるべき?

答えて

11
  1. QAbstractSpinBoxから派生します。
  2. 有効なint64値のみを許可するようにをQLineEditに追加します。
  3. valueというプロパティを追加して、実際に値を保持しているint64メンバへのアクセスを提供します。
  4. Reimplment stepBy(int steps)番号を変更します。
  5. QSpinBoxに固有のメソッドとプロパティを実装します(最小値/最大値、接頭辞、接尾辞など)。

実際には、実際のint64値とQLineEditが保持するテキストの2つの状態が維持されます。通常これは次のように更新されます:

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

ただし、ユーザーが接頭辞または接尾辞を必要とする場合は、わずかに微調整する必要があります。

+0

ありがとう、あなたの答えをありがとう、しかしどうやってInt64範囲を検証するためにバリデータを作成できますか?QIntValidatorはint32しか提供していませんか? – warunanc

+1

私はQValidatorをサブクラス化し、自分自身のInt64Validatorを作成しなければならないと思います – warunanc

+2

それはそうです。 – cmannett85

関連する問題