Seite 1 von 1
while schleife durch button bzw key abbrechen
Verfasst: 17. Juli 2011 18:50
von Saul
Hallo Community,
bin recht neu in der Qt Welt und daher noch oft am verzweifeln =( Ich versuche nun schon die ganze zeit eine einfache while schleife durch einen tastendruck (z B ESC-key) oder durch einen Button zu beenden bzw abzubrechen. Probiere ich zB mittels if schleife eine button abfrage zu realisieren, bekomme ich beim compilieren eine fehlermeldung. Er kann nicht auf den protected member clicked zugreifen
Genauso wenig funktioniert die variante mit der key abfrage.
Code: Alles auswählen
QKeyEvent *e;
if ( e->key() == Qt::Key_Escape ) break;
anscheinend ist die sache nicht so simpel wie ich es vermutet hatte und wäre sehr dankbar wenn mir jemand helfen könnte.
Gruß, Saul
Re: while schleife durch button bzw key abbrechen
Verfasst: 17. Juli 2011 19:01
von Christian81
Sorry aber das ist doch hoffentlich nicht Dein Ernst:
Code: Alles auswählen
QKeyEvent *e;
if ( e->key() == Qt::Key_Escape ) break;
Wenn doch würde ich erstmal ein C/C++ Grundlagen Buch lesen.
Ansonsten - während einer Schleife kann Qt keine Events verarbeiten - Du blockierst die Eventloop ja mit der Schleife. Größere Rechenfunktionen sollten deshalb in eigene Threads ausgelagert werden. Aber wenn ich mir die beiden Codezeilen bzw. die daraus resultierenden Probleme ansehe würde ich erstmal mit den Grundlagen anfangen...
Re: while schleife durch button bzw key abbrechen
Verfasst: 17. Juli 2011 19:18
von Saul
Sehr motivieren, danke

Wie gesagt bin ich halt noch recht neu in Qt. Also ich hab gelesen, das durch das Änhangen von QCoreApplication:: processEvents() in einer schleife, ein reibungsloser ablauf möglich ist und auch die einfachste Variante sein soll. Um halt irgendwann mal aus der schleife raus zu kommen brauch ich ein break; ...
Das man Threads verwenden soll hab ich schon x mal gelesen doch leider nie wirklich ein anschauliches besipiel gefunden. Die dinger in der Qt doku kann man als anfänger echt vergessen. Die bringen mir gar nix =( Ich weiß bis jetzt nur das man die threads durch exec starten soll und dann mittels signalen und slots ansprechen kann.
Doch die erste variante ohne threads scheint mir bisher verständlicher ...
Re: while schleife durch button bzw key abbrechen
Verfasst: 17. Juli 2011 19:21
von Christian81
Sorry aber die obigen Probleme haben definitv nichts mit Qt sondern mit C++ Grundlagen zu tun. Ohne diese macht es keinen Sinn mit Qt anzufangen... ist nunmal so.
Re: while schleife durch button bzw key abbrechen
Verfasst: 18. Juli 2011 15:47
von Saul
Sorry, aber ich weiß nicht wirklich worauf du hinaus willst? Mag ja sein, dass das Gundlagen sind, aber ein klitze kleiner Tip wäre sehr nett gewesen.
Wenn ich mich so im Netz umschaue finde ich einige Beiträge, in denen versucht wird mittels
Code: Alles auswählen
void Prog::keyPressEvent(QKeyEvent * e)
{
while(1)
{
...
if (e->key() == Qt::Key_Escape) break;
}
}
eine Tastenabfrage zu erzeugen.
Gruß, Saul
Re: while schleife durch button bzw key abbrechen
Verfasst: 18. Juli 2011 19:39
von Christian81
Und was machst Du? Du erzeugst einen uninitialisierten Pointer auf ein QKeyEvent und greifst darauf zu. Wie sollte das gehen? QKeyEvents gibts nur über die keyPressEvent/keyRelease - Funktionen.
Re: while schleife durch button bzw key abbrechen
Verfasst: 19. Juli 2011 10:58
von Saul
Hey Christian,
das war doch mal nen wink mit dem Zaunpfahl

Jetzt weiß ich wenigsten wo ich ansetzen muss und ich hab auch schon eine Idee ...
Danke dir!!
Gruß, Saul