while schleife durch button bzw key abbrechen

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
Saul
Beiträge: 29
Registriert: 17. Juni 2011 09:41

while schleife durch button bzw key abbrechen

Beitrag 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

Code: Alles auswählen

if (pushButton->clicked()) break;
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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: while schleife durch button bzw key abbrechen

Beitrag 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...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Saul
Beiträge: 29
Registriert: 17. Juni 2011 09:41

Re: while schleife durch button bzw key abbrechen

Beitrag 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 ...
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: while schleife durch button bzw key abbrechen

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Saul
Beiträge: 29
Registriert: 17. Juni 2011 09:41

Re: while schleife durch button bzw key abbrechen

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: while schleife durch button bzw key abbrechen

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Saul
Beiträge: 29
Registriert: 17. Juni 2011 09:41

Re: while schleife durch button bzw key abbrechen

Beitrag von Saul »

Hey Christian,
das war doch mal nen wink mit dem Zaunpfahl :D Jetzt weiß ich wenigsten wo ich ansetzen muss und ich hab auch schon eine Idee ...
Danke dir!!
Gruß, Saul
Antworten