Kein Qwt, eigenes Verfahren

Verschiedenes zu Qt
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Pixtar hat geschrieben:Ich glaub dir schon Uwe, aber die Frage ist dann immernoch, wie ich meine ScrollBar veränder ohne ein Ereignis auszulösen, welches ich connected habe ... das Umbauen der Funktionen, das nichts im paintEvent manipuliert wird ist ja kein Problem ...
Indem du einen neuen SLOT schaffst, der vor dem Zeichnen alle Variablen passend setzt, gleich die Scrollbars richtig setzt. Und jetzt machst du in disem SLOT dein repaint(). In dem paintEvent() hast du jetzt keine Manipulation der Scrollbar mehr.

Ein weiteres Problem, das du damit löst, ist das Verändern von Variablen im paintEvent(). So etwas ist manchmal hilfreich, bringt dir aber nix. Ich sprech jetzt von dem inner. Du hast es nicht in der Hand, wie oft ein paintEvent aufgerufen wird. Auch ein resizeEvent triggert ein repaint. Wenn du hingegen in jenem neuen SLOT vor einem repaint das inner neu setzt, wird die Sache gleich übersichtlicher ;)

Ich denke du schreibst ein Oszilloskop. Überleg dir ein Interface, das dafür nütlich sein könnte. Z.B. slot insertMesurePoint(int offset);. Hier kannst du dann deine Berechnungen machen, evtl. etwas Cachen. Liegt an dir, ob du bei jedem neuen Messpunkt alles neu malen willst, oder evtl. nur alle 10 Punkte, vllt. getimert, falls mal ne Zeitlang nix neues kommen sollte und du bereits existierende Messpunkte nicht ewig vorenthalten willst.

HINT: Ein Updateintervall von 50ms nimmt der Mensch noch als flüssig wahr.
Pixtar
Beiträge: 97
Registriert: 5. Mai 2010 15:32

Beitrag von Pixtar »

Kurz nachgehakt: Was passiert bei einem Doppelconnect? Besser gesagt bei dem Aufruf, wo wir gerade wieder beim SIGNAL/SLOT-System sind.
Sprich:

Code: Alles auswählen

    QPushButton *test = new QPushButton("test",this);
    connect(test,SIGNAL(clicked()),this,SLOT(machWas()));
    connect(test,SIGNAL(clicked()),this,SLOT(machWasAnderes()));
Werden die Connections nach der Reihenfolge ihrer Initialisierung aufgerufen oder starten beide Funktionen gleichzeitig?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Pixtar hat geschrieben: Werden die Connections nach der Reihenfolge ihrer Initialisierung aufgerufen oder starten beide Funktionen gleichzeitig?
Wie soll etwas in ein und demselben Thread gleichzetig passieren?
Es ist nichtmal definiert welcher Slot als erstes ausgeführt wird.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Pixtar
Beiträge: 97
Registriert: 5. Mai 2010 15:32

Beitrag von Pixtar »

Jo, das mit den Thread hatte ich mir schon gedacht.
Es ist nichtmal definiert welcher Slot als erstes ausgeführt wird.
Un wie kann ich der Connection mitteilen, welcher Slot als erstes ausgeführt werden soll? Über das enum Qt::ConnectionType? (Letzter Parameter von connect)
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Pixtar hat geschrieben: Un wie kann ich der connection mitteilen, welcher Slot als erstes ausgeführt werden soll?
Gar nicht. Wenn du etwas in Reihenfolge brauchst musst Du nur einen Slot aufrufen der dann Deine Funktionen aufruft.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Pixtar
Beiträge: 97
Registriert: 5. Mai 2010 15:32

Beitrag von Pixtar »

Jop, so habe ich es jetzt gelöst gehabt .. ich meine aber irgendwo in dem Qt-Buch was ich habe gelesen zu haben, das ein Doppelconnect funktioniert. Na klar, warum sollte es auch nicht funktionieren, mich würde halt nur interessieren, ob Qt damit Probleme bekommt/hat?
Denn theoretisch ist es ja möglich ..
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Habe ich irgendwo behauptet dass es nicht möglich ist? Natürlich kann ich mehrere Slot an ein Signal binden.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
brax
Beiträge: 208
Registriert: 11. Mai 2010 11:22

Beitrag von brax »

Christian81 hat geschrieben:Es ist nichtmal definiert welcher Slot als erstes ausgeführt wird.
Laut Qt schon:

If several slots are connected to one signal, the slots will be executed one after the other, in the order they have been connected, when the signal is emitted.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

brax hat geschrieben: Laut Qt schon:

If several slots are connected to one signal, the slots will be executed one after the other, in the order they have been connected, when the signal is emitted.
Dann ist das neu - sie haben sich da eigentlich nie festgelegt und es explizit offen gelassen. wo steht das?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Uwe
Beiträge: 176
Registriert: 9. Oktober 2005 13:37
Wohnort: München

Beitrag von Uwe »

Christian81 hat geschrieben: Dann ist das neu - sie haben sich da eigentlich nie festgelegt und es explizit offen gelassen.
Eigentlich war das schon immer so.

Uwe
brax
Beiträge: 208
Registriert: 11. Mai 2010 11:22

Beitrag von brax »

Das steht hier:
http://doc.trolltech.com/4.6/signalsandslots.html

Und es scheint in der Tat neu zu sein, denn in der Doku zu 4.5 steht noch:
If several slots are connected to one signal, the slots will be executed one after the other, in an arbitrary order, when the signal is emitted.
Antworten