Zamiana znaku wpisywanego z klawiatury

0

Witam,
mój program posiada doubleSpinBox, w którym wpisywane są liczby zmiennoprzecinkowe, z maksymalnie dwoma miejscami po przecinku. Ustawienia lokalne mam zmienione na C/Default (separatorem dziesiętnym jest "." a nie ","). Znak przecinka (",") przy tym ustawieniu pełni funkcję separatora tysięcy, lecz to jest dla mnie nieistotna funkcja. Chciałbym, żeby po wciśnięciu klawisza "," na klawiaturze, w doubleSpinBox'ie została dopisana kropka (".") zamiast przecinka. Innymi słowy, chcę zablokować możliwość wprowadzania znaku przecinka do doubleSpinBox'a, przy czym każda próba wciśnięcia klawisza przecinka (",") lub kropki (".") skutkowałaby w obydwóch przypadkach wprowadzeniem znaku kropki ("."). Nie wiem, czy dobrze myślę, że należy to zrobić przy pomocy keyPressEvent(), lecz nie wiem zbytnio jak to ma wyglądać, w tym przypadku. Bardzo proszę o pomoc.

0

Nie jestem przekonany do tego czy to jest dobre rozwiązanie, ale jeśli już to:

void TwojWidget::keyPressEvent ( QKeyEvent * event )
{
    if (event->text() == ",") {
         QKeyEvent newEvent(QEvent::KeyPress, event->modifiers(), ".", event->isAutoRepeat(), event->count());
         QDoubleSpinBox::keyPressEvent(&newEvent);
    } else {
         QDoubleSpinBox::keyPressEvent(evnet);
    }
}

void TwojWidget::keyReleaseEvent ( QKeyEvent * event )
{
    if (event->text() == ",") {
         QKeyEvent newEvent(QEvent::KeyRelease, event->modifiers(), ".", event->isAutoRepeat(), event->count());
         QDoubleSpinBox::keyReleaseEvent(&newEvent);
    } else {
         QDoubleSpinBox::keyReleaseEvent(evnet);
    }
}
0

Przepraszam, że tak późno się zainteresowałem własnym tematem. Otóż próbowałem pierwszej metody, ale sypie mi błędami, że argumenty funkcji nie pasują. Jedyne co zmieniłem w tym kodzie to nazwa widgeta oraz poprawiłem wyrazy "event" i nie wiem co jest nie tak.

Co do drugiej metody to też nie potrafię jej wcielić w życie. Generalnie jestem raczkujący w tym środowisku i bardzo się gubię w dokumentacji tej biblioteki, więc proszę o wyrozumiałość. Dziękuję za zainteresowanie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1