Seltsames Verhalten von QDockWidgets
Verfasst: Mittwoch 8. Dezember 2010, 08:57
Hallo liebes Python-Forum,
ich habe eine Frage bezüglich QDockWidgets:
Ich habe eine Anwendung in der Projekte angelegt werden können, die mehrere Diagramme in Form von QDockWidgets in einem QMainWindow darstellen. Beim Erstellen / Laden eines Projektes geschieht folgendes. DockPlot ist dabei eine eigene Klasse die von QDockWidget erbt und Diagramme darstellt und self ist die Klasse die von QMainWindow erbt.:
Beim Schließen eines Projektes wird folgendes Code-Fragment ausgeführt:
Beim Speichern eines Projektes wird auch der Status der QDockWidgets gespeichert um sie anschließend beim Laden wieder korrekt darstellen zu können.
Und zu guter Letzt das Laden eines Projektes:
Das Erstellen und Speichern funktioniert einwandfrei. Wenn kein Projekt geladen ist funktioniert auch das Laden. Ist allerdings ein Projekt geladen und ich ein anderes Projekt, oder dasselbe, öfnnen möchte werden alle QDockWidgets doppelt angezeigt. Verzichte ich auf das Wiederherstellen der einzelnen Status für die QDockWidgets tritt dieses Phänomen nicht auf.
Auch dies funktioniert beim Schließen eines Projektes nicht:
Zwar findet er alle DockWidgets und führt diesen Code aus, aber wenn ich mir dannach mit print alle QDockWidgets ausgeben lasse, dann sind sie noch da und werden auch noch gezeigt. :K
Hat jemand zufälligerweise schonmal ein ähnliches Problem gehabt, oder weiss wo ich einen Fehler habe? Hoffe es kann jemand helfen. Sollten noch weitere Informationen von Nutzen sein, dann lasst es mich wissen.
Gruß,
Rekrul
ich habe eine Frage bezüglich QDockWidgets:
Ich habe eine Anwendung in der Projekte angelegt werden können, die mehrere Diagramme in Form von QDockWidgets in einem QMainWindow darstellen. Beim Erstellen / Laden eines Projektes geschieht folgendes. DockPlot ist dabei eine eigene Klasse die von QDockWidget erbt und Diagramme darstellt und self ist die Klasse die von QMainWindow erbt.:
Code: Alles auswählen
for diagram in PM.current_project.diagrams:
self.dock_plot[diagram.name] = DockPlot(self, diagram)
self.dock_plot[diagram.name].setWindowTitle(diagram.name)
self.addDockWidget(0x4, self.dock_plot[diagram.name])
Code: Alles auswählen
for key in self.dock_plot:
self.removeDockWidget(self.dock_plot[key])
self.dock_plot[key].close()
self.dock_plot[key].destroy()
Code: Alles auswählen
state = self.saveState()
geo_file = open('geometry', 'wb')
geo_file.write(state)
geo_file.close()
Und zu guter Letzt das Laden eines Projektes:
Code: Alles auswählen
for diagram in PM.current_project.diagrams:
self.dock_plot[diagram.name] = DockPlot(self, diagram)
self.dock_plot[diagram.name].setWindowTitle(diagram.name)
self.addDockWidget(0x4, self.dock_plot[diagram.name])
geo_file = open(os.path.join(PM.current_projekt.workspace, 'geometry'), 'rb')
state = geo_file.read()
geo_file.close()
self.restoreState(state)
Auch dies funktioniert beim Schließen eines Projektes nicht:
Code: Alles auswählen
for dockwidget in self.findChildren(QtGui.QDockWidget):
self.removeDockWidget(dockwidget)
dockwidget.close()
dockwidget.destroy()
Hat jemand zufälligerweise schonmal ein ähnliches Problem gehabt, oder weiss wo ich einen Fehler habe? Hoffe es kann jemand helfen. Sollten noch weitere Informationen von Nutzen sein, dann lasst es mich wissen.
Gruß,
Rekrul
- Python v. 2.6.6
- PyQt4 v. 4.7.7