• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Qt - kalkulator

Object Storage Arubacloud
+1 głos
831 wizyt
pytanie zadane 2 października 2019 w C i C++ przez Jakub 0 Pasjonat (23,120 p.)
zamknięte 3 października 2019 przez Jakub 0

Hej, tworzę mini projekt w Qt. Jest to kalkulator:

Nie ma on jednak typowego interfejsu kalkulatora, jest to bardziej parser arytmetyczny. Wyrażenie równie dobrze możemy napisać używając klawiatury. Dodałem jednak te przyciski by zachować wygląd kalkulatora, uprościć stosowanie typowych funkcji matematycznych oraz ewentualnie umożliwić korzystanie z niego w przypadku awarii klawiatury laugh. Aktualnie po wciśnięciu przycisku ( w tym przypadku numerycznego ) wywołuje się ta funkcja:

void Calculator::numButtonPressed() {
    QPushButton* button = qobject_cast<QPushButton*>(sender());
    QString bval = button->text();
    QString vtext = ui->view->text();
    vtext += bval;
    ui->view->setText(vtext);
}

Rozwiązanie to ma jednak wady, nie możemy za jego pomocą regulować miejsca w które zostaną wstawione znaki ( w polu edycji ). Chcę by były one wstawione w miejscu migającego kursora ( tak jak kiedy normalnie piszemy na klawiaturze ).

 

Jakie rozwiązanie było by najlepsze? Może wyjściem jest symulowanie wciśnięcia znaku?

Z góry dziękuje :)

komentarz zamknięcia: problem rozwiązany.

2 odpowiedzi

0 głosów
odpowiedź 2 października 2019 przez tangarr Mędrzec (154,780 p.)
wybrane 2 października 2019 przez Jakub 0
 
Najlepsza
Jeżeli używasz kontrolki QTextEdit to możesz użyć funkcji insertPlainText(const QString &text)
komentarz 2 października 2019 przez Jakub 0 Pasjonat (23,120 p.)

Korzystam z QLineEdit i użyłem metody insert(). Działa ale problem jest taki że po wciśnięciu na dowolny przycisk tracę kursor:

 

komentarz 3 października 2019 przez Jakub 0 Pasjonat (23,120 p.)
Ok, użyłem setFocus() i działa.
0 głosów
odpowiedź 2 października 2019 przez Chess Szeryf (76,710 p.)

Przestaw ten kursor w inne miejsce używając position. Zobacz też instrukcje z "See also", czyli setPosition, movePosition, anchor, positionInBlock. Jest jeszcze coś takiego jak setKeepPositionOnInsert.

Podobne pytania

+1 głos
7 odpowiedzi 1,241 wizyt
pytanie zadane 11 czerwca 2015 w Nasze projekty przez gnx Dyskutant (7,720 p.)
0 głosów
1 odpowiedź 510 wizyt
pytanie zadane 28 października 2018 w C i C++ przez warior1 Użytkownik (520 p.)

92,551 zapytań

141,399 odpowiedzi

319,529 komentarzy

61,937 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...