Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Qt: for-Anweisung

  1. #1
    Registrierter Benutzer
    Registriert seit
    01.06.2001
    Beiträge
    11

    Qt: for-Anweisung

    Hallo

    Versuche mit einem Button den Wert einer QSpinBox zu ändern. Solange ich den Button gedrückt halte soll der Wert um 10 verkleinert werden ( mit hilfe von QTimer alle 0,5 Sekunden) Läuft auch wunderbar.
    Habe dann eine for-Anweisung eingebaut um diesen Vorgang auf 5mal zu reduzieren.

    Code:
     
    void Form1::slotTimerTimeout()
    {
    
        spinbox_value = spinbox->value();   //rückgabewert spinbox
        p = button_down->isDown();             //button pressed
    
    
       if(p && spinbox_value > 1010 )
       {
         for (int i=0;i<5;i++)
         {
          spinbox_value-=10;
          spinbox->setValue(spinbox_value);
         }
       }
    
    }
    Allerdings wird der Wert jetzt jedesmal um 50 verkleinert. Kann mir jemand sagen was ich falsch mache

    Danke Marco

  2. #2
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    die for - schleife sieht irgendwie von weitem so aus, als würde sie
    den Wert fünfmal um 10 verkleinern!

    Oder nicht?

  3. #3
    Registrierter Benutzer
    Registriert seit
    01.06.2001
    Beiträge
    11
    ja das soll sie ja auch,
    aber ich sollte auch nach jedem durchlauf angezeigt bekommen das sich der Wert um 10 geändert hat
    Code:
    spinbox->setValue(spinbox_value);
    stattdessen zeigt die Spinbox nur Sprünge von 50 ??

  4. #4
    Registrierter Benutzer
    Registriert seit
    01.06.2001
    Beiträge
    11
    Oha
    hab gerade gemerkt das der Timer in der schleife keine Funktion hat.
    Das geht so schnell das ich das nicht sehen kann. Da muß ich mir wohl was anderes überlegen.

    Danke Marco

  5. #5
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Das liegt daran, dass die eventloop nicht wieder aktiv wird, weil ja noch code im slot läuft.
    erst wenn der Slot beendet wird das nächste event behandelt.

    Du mußt also den Wert um 10 verringern und dann den slot verlassen und somit der Eventloop die Kontrolle zurück geben.

    Ciao,
    _

  6. #6
    Registrierter Benutzer
    Registriert seit
    01.06.2001
    Beiträge
    11
    Hallo anda_skoa

    es läuft
    hab das jetzt so geändert das nur noch eine Anweisung pro Slot-Durchlauf bearbeitet wird.


    Danke Marco

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •