2013-03-27 13 views
10

Muszę zaimplementować kontrolkę QSpinBox, która powinna być w stanie przetworzyć wartości int64 jako minimalne wartości maksymalne: &. Obecna implementacja obsługuje tylko wartości int32.Jak podklasę QSpinBox, aby mogła mieć wartości int64 jako maksimum i minimum

Koniec dnia mój QSpinBox powinna przyjąć dowolną wartość pomiędzy 9223372036854775807 i -9223372036854775808

Co muszę zrobić, jeśli mam to osiągnąć przez instacji QAbstractSpinbox?

Odpowiedz

11
  1. Wyprowadzić z QAbstractSpinBox.
  2. Dodaj QValidator do QLineEdit, aby zezwalać tylko na ważne wartości int64.
  3. Dodaj właściwość o nazwie value, aby zapewnić dostęp do elementu int64, który faktycznie przechowuje wartość.
  4. Reimplment stepBy(int steps) modyfikowanie numeru.
  5. Zaimplementuj metody i właściwości specyficzne dla QSpinBox, które Cię interesują (minimalne/maksymalne limity, prefiks, sufiks itd.).

Zasadniczo utrzymujesz dwa stany: jeden to rzeczywista wartość int64, a drugi to tekst przechowywany przez QLineEdit. Zwykle jest to po prostu aktualizowany przez:

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

Ale to muszą być manipulowane nieznacznie, jeśli użytkownik chce prefiks lub sufiks.

+0

Dziękuję za odpowiedź, ale w jaki sposób mogę utworzyć walidator do sprawdzania zasięgu Int64, QIntValidator zapewnia tylko int32? – warunanc

+1

Zgaduję, że muszę podklasy QValidator i utworzyć własne Int64Validator – warunanc

+2

Tak to wygląda. – cmannett85

Powiązane problemy