Qt: Kalkulátor QLCDNumber widget-tel

Kezdőlap Fórumok Programozás Qt: Kalkulátor QLCDNumber widget-tel

10 bejegyzés megtekintése - 1-10 / 13
  • Szerző
    Bejegyzés
  • #2128292
    zoltan22
    Felhasználó

      Ott a double. Ha megnyomja a pontot, akkor te megjegyzed, hogy most jonnek a tizedesjegyek (ha az 123.0-ra a kijelzo 123-at irna ki), majd a kovetkezo szamjegyeket mint tizedesjegyeket kezeled (egy kis matekkel siman megoldhato).

      #2128293
      zoltan22
      Felhasználó

        Ott a double. Ha megnyomja a pontot, akkor te megjegyzed, hogy most jonnek a tizedesjegyek (ha az 123.0-ra a kijelzo 123-at irna ki), majd a kovetkezo szamjegyeket mint tizedesjegyeket kezeled (egy kis matekkel siman megoldhato).

        #2128294
        hrgy84
        Felhasználó

          Igen, de nekem a hülyebiztossággal van gondom. Mi van ha,ég1x megnyomja?

          Ya, és a számok kódja:

          Code:
          void Calculator::digitClicked()
          {
              Button *clickedButton = qobject_cast

          Ha azt nyomja be hogy 5 . 0 6 akkor a 6-osnál miből tudom, hogy az a 0 ami ott van, az most megtartandó vagy sem?
          Mert ugye a QString::number(digitValue) mindig 5.0-t ad vissza, akár nyomott 0-t akár nem. így akkor nem fog tudni olyan tizedest beütni, amibe vezető nullák vannak.
          Én is gondoltam a bool-ban tárolni a „pont nyomva” dolgot, de így ez a bajom.
          Amúgy ha jól sejtem, a kijelző mindig a legmegfelelőbb verziót írja ki, azaz egész esetén egészet, double esetén tizedesponttal meg mindennel, és ezt a szám értékéből veszi ki vhogy.

          #2128295
          hrgy84
          Felhasználó

            Igen, de nekem a hülyebiztossággal van gondom. Mi van ha,ég1x megnyomja?

            Ya, és a számok kódja:

            Code:
            void Calculator::digitClicked()
            {
                Button *clickedButton = qobject_cast

            Ha azt nyomja be hogy 5 . 0 6 akkor a 6-osnál miből tudom, hogy az a 0 ami ott van, az most megtartandó vagy sem?
            Mert ugye a QString::number(digitValue) mindig 5.0-t ad vissza, akár nyomott 0-t akár nem. így akkor nem fog tudni olyan tizedest beütni, amibe vezető nullák vannak.
            Én is gondoltam a bool-ban tárolni a „pont nyomva” dolgot, de így ez a bajom.
            Amúgy ha jól sejtem, a kijelző mindig a legmegfelelőbb verziót írja ki, azaz egész esetén egészet, double esetén tizedesponttal meg mindennel, és ezt a szám értékéből veszi ki vhogy.

            #2128296
            zoltan22
            Felhasználó

              Meg teszel egy privat szamolot, hogy hanyadik tizedes jegynel tartsz.

              Code:
              class Calculator {
              private:
              double tizedesOszto; // ez alapbol 0

              void periodClicked() {
              if(tizedesOszto == 0)
              tizedesOszto = 1;
              }
              void digitClicked(){
              // melyik gomb volt az, lekered az ereti erteket…
              if( tizedesOszto > 0){
              ertek += (double)szamjegy / tizedesOszto;
              tizedesOszto /= 10;
              } else {
              ertek *= 10;
              ertek += szamjegy;
              }
              }
              };

              Igy az 5 . 0 6 -ral se kellen gond legyen. Mikor uj szamot kersz be, akkor lenullazod.

              szerk. : egy bugot javitottam a kodban

              #2128297
              zoltan22
              Felhasználó

                Meg teszel egy privat szamolot, hogy hanyadik tizedes jegynel tartsz.

                Code:
                class Calculator {
                private:
                double tizedesOszto; // ez alapbol 0

                void periodClicked() {
                if(tizedesOszto == 0)
                tizedesOszto = 1;
                }
                void digitClicked(){
                // melyik gomb volt az, lekered az ereti erteket…
                if( tizedesOszto > 0){
                ertek += (double)szamjegy / tizedesOszto;
                tizedesOszto /= 10;
                } else {
                ertek *= 10;
                ertek += szamjegy;
                }
                }
                };

                Igy az 5 . 0 6 -ral se kellen gond legyen. Mikor uj szamot kersz be, akkor lenullazod.

                szerk. : egy bugot javitottam a kodban

                #2128298
                hrgy84
                Felhasználó

                  Zoli, köszönöm szépem, ki fogom probálni.

                  #2128299
                  hrgy84
                  Felhasználó

                    Zoli, köszönöm szépem, ki fogom probálni.

                    #2128300
                    hrgy84
                    Felhasználó

                      zoli, a periodClicked metódusban az if után a tizedesosztónak nem 0.1 értéket kéne adni? Mert ahogy írod, úgy első körben még 1-gyel fogja osztani az új számot, amivel a display értékét növelem, és az úgy nem yó. Másik megoldás lehet esetleg a tizedesoszto /= 10 egy sorral feljebb hozása.

                      #2128301
                      hrgy84
                      Felhasználó

                        zoli, a periodClicked metódusban az if után a tizedesosztónak nem 0.1 értéket kéne adni? Mert ahogy írod, úgy első körben még 1-gyel fogja osztani az új számot, amivel a display értékét növelem, és az úgy nem yó. Másik megoldás lehet esetleg a tizedesoszto /= 10 egy sorral feljebb hozása.

                      10 bejegyzés megtekintése - 1-10 / 13
                      • Be kell jelentkezni a hozzászóláshoz.