Hallo!
Ich möchte gerne in Qt5 die Reihenfolge der Widgets in einem QGraphicsView ändern.
Grundlage ist dieses Codebeispiel, mit dem man die Widgets (farbige Kreise) mit der Maus auf der Oberfläche bewegen kann.
In dem Objekt "view" der Klasse GraphicView habe ich mehrere farbige Elypse-Widgets (moveObject, moveObject2, moveObject3) angelegt. Mit der Maus kann man diese Kreise nun verschieben. Die Reihenfolge bleibt aber immer gleich - der zuletzt erzeugte Kreis verdeckt die anderen.
Ich möchte nun, dass der Kreis, den ich anklicke, nach vorne kommt und ggf. die anderen verdeckt, wenn ich ihn verschiebe. In die Funktion mousePressEvent() habe ich deshalb statt "pass" folgende Zeilen geschrieben:
self.setBrush(Qt.green)
self.raise() # Ich habe es auch mit raise_() versucht, weil raise in Python schon ein reserviertes Wort ist. Klappt aber auch nicht.
Die zweite Zeile sollte eigentlich das angeklickte Widget in den Vordergrund holen, führt aber zum Programmabbruch. Wenn ich die Zeile auskommentiere, läuft das Programm fehlerfrei und das angeklickte Objekt wird grün, so wie man das nach dem Code auch erwartet.
Ich hab noch ein wenig gegoogelt und mir scheint, dass raise() nur auf Fenster angewandt werden kann.
Wie kann ich einem Widget sagen, dass es in der Reihenfolge der Widgets ganz oben stehen, also in den Vordergrund kommen soll?