[Gelöst] "Enter" abwarten in QGraphicsScene

Alles rund um die Programmierung mit Qt
Antworten
abcmann74
Beiträge: 31
Registriert: 3. Mai 2010 11:03

[Gelöst] "Enter" abwarten in QGraphicsScene

Beitrag von abcmann74 »

Hi

Ich habe folgendes Problem.

Ich will gerne eine Funktion in meiner Hauptklasse MainWindow.h (abegeleitet von QMainWindow) starten. Am Anfang der Funktion will ich, dass man Punkte in meinem QGraphicsView / QGraphicsScene solange klicken kann bis man Enter drückt. Für meine QGraphicsView / QGraphicsScene habe ich eine weitere Klasse (ImageWindow.h) implementiert. Dort greife ich mit QGraphicSceneEvents auf die Mauspositionen usw. zu.
Kurz gesagt: Meine Funktion in MainWindow.h soll solange warten, bis ich in meinem QGraphicsView / QGraphicsScene die Punkte ausgewählt und "Enter" gedrückt habe. Dann erst hole ich mir die Punkte aus der ImageWindow.h Klasse und arbeite damit in meiner Hauptklasse MainWindow.h weiter.

Ich habe bereits versucht mit dem QTimer zu abreiten, aber bin damit auch nicht wirklich vorran gekommen.

Vllt. kann mir hier jemand weiterhelfen?

Grüße
Zuletzt geändert von abcmann74 am 2. September 2010 09:47, insgesamt 1-mal geändert.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Hmm, schon mal mit einem keyPressEvent versucht?
abcmann74
Beiträge: 31
Registriert: 3. Mai 2010 11:03

Beitrag von abcmann74 »

hi upsala danke für deine Antwort.

Mit dem keyPressEvent() habe ich es schon versucht. Sobald ich Enter drücke, setze ich eine globale Variable "EnterPressed_" auf true. Klar könnte ich sagen, sobald "EnterPressed_==true" sind keine Klicks mehr erlaubt.
Das Problem ist dann aber weiterhin, dass meine andere Funktion in MainWindow.h nicht auf das klicken wartet. Sie läuft einfach durch und ich habe gar keine Zeit die Punkte zu klicken. Erst nach dem Enter event in meiner ImageWindow.h soll es in der Funktion in Mainwindow.h weitergehen.
padreigh
Beiträge: 340
Registriert: 13. Mai 2010 10:06

Beitrag von padreigh »

Bau nen Knopf, schreib Punkte übertragen drauf, kleb den neben das Grafiks view (oder in die Hauptklasse). Progge nen Slot der alle Punkte aus dem Grafiksview holt und als QList<QPoint> an die main gui weitergibt ?

Warum Enter?


Wenn du den User gängeln willst schau dir QWizard an ...
Patrick (QtCreator 1.3.1, Qt 4.6.3)
---
template = subdirs
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Kurz gesagt: Meine Funktion in MainWindow.h soll solange warten, bis ich in meinem QGraphicsView / QGraphicsScene die Punkte ausgewählt und "Enter" gedrückt habe. Dann erst hole ich mir die Punkte aus der ImageWindow.h Klasse und arbeite damit in meiner Hauptklasse MainWindow.h weiter.
Das Problem ist dann aber weiterhin, dass meine andere Funktion in MainWindow.h nicht auf das klicken wartet. Sie läuft einfach durch und ich habe gar keine Zeit die Punkte zu klicken. Erst nach dem Enter event in meiner ImageWindow.h soll es in der Funktion in Mainwindow.h weitergehen.
Die beiden Aussagen + Titel machen mir Angst...
Gehst du irgendwie von einer nicht blockierenden Funktion aus, die abgearbeitet wird, und rigendwo stehen bleiben soll, bis enter gedrückt wurde? Das geht nämlich nicht!
Und globale Variablen sind sowieso böse. In deinem Fall sogar unsinnig, da du keinen "Listener" hast, der den Status der Variablen überwacht (sowas gibts in C++ nicht).

Das einzige was du machen musst: korrekt ein keyPressEvent implementieren! Mach es in der scene, im Event frägst du nach Enter, falls das eintritt entfernst du bei allen Items das ItemIsSelectable-Flag. Fertig.
abcmann74
Beiträge: 31
Registriert: 3. Mai 2010 11:03

Beitrag von abcmann74 »

danke franzf. sry für die sehr späte rückmeldung. habe es mit einem KeyPressEvent hinbekommen.
Antworten