Kindelemente im dropEvent löschen
Verfasst: 1. Juni 2006 11:00
Hallo,
ich habe folgende Situation: Eine von QFrame abgeleitete Klasse (ElementContainer) enthält bei mir ein QVBoxLayout, innerhalb dieses Layouts befinden sich dann weitere Widgets von einer anderen Klasse, die ebenfalls von QFrame abgeleitet ist (ElementWidget). Die Reihenfolge dieser Widgets soll man dann per Drag&Drop ändern können. Da das so ohne Weiteres nicht geht (habe zumindest in der Doku nichts entsprechendes gefunden), möchte ich jetzt erst alle ElementWidgets im Container löschen und danach in der neuen Sortierung neu einfügen (das ist auch nicht so schlimm, weil ich ohnehin alle ElementWidgets nochmal bearbeiten muss).
In ElementWidget habe ich mouseMoveEvent und mousePressEvent reimplementiert, um Drag&Drop zu realisieren. In ElementContainer dann dragEnterEvent und dropEvent. Ich bin jetzt soweit, dass ich alle Daten aus dem QDropEvent lesen kann. Das Problem kommt jetzt: Wenn ich in dropEvent alle ElementWidgets lösche, gibt es _nach_ dem dropEvent einen Programmabsturz.
Ich kann mir vorstellen, dass bei dieser ganzen Drag&Drop-Sache vielleicht noch nach dropEvent auf das Quellwidget zugegriffen werden soll, was ja dann nicht mehr geht, weil es ja gelöscht wurde.
Weiß jemand, wie man das in den Griff kriegen könnte?
Vielen Dank
Thorben
ich habe folgende Situation: Eine von QFrame abgeleitete Klasse (ElementContainer) enthält bei mir ein QVBoxLayout, innerhalb dieses Layouts befinden sich dann weitere Widgets von einer anderen Klasse, die ebenfalls von QFrame abgeleitet ist (ElementWidget). Die Reihenfolge dieser Widgets soll man dann per Drag&Drop ändern können. Da das so ohne Weiteres nicht geht (habe zumindest in der Doku nichts entsprechendes gefunden), möchte ich jetzt erst alle ElementWidgets im Container löschen und danach in der neuen Sortierung neu einfügen (das ist auch nicht so schlimm, weil ich ohnehin alle ElementWidgets nochmal bearbeiten muss).
In ElementWidget habe ich mouseMoveEvent und mousePressEvent reimplementiert, um Drag&Drop zu realisieren. In ElementContainer dann dragEnterEvent und dropEvent. Ich bin jetzt soweit, dass ich alle Daten aus dem QDropEvent lesen kann. Das Problem kommt jetzt: Wenn ich in dropEvent alle ElementWidgets lösche, gibt es _nach_ dem dropEvent einen Programmabsturz.
Ich kann mir vorstellen, dass bei dieser ganzen Drag&Drop-Sache vielleicht noch nach dropEvent auf das Quellwidget zugegriffen werden soll, was ja dann nicht mehr geht, weil es ja gelöscht wurde.
Weiß jemand, wie man das in den Griff kriegen könnte?
Vielen Dank
Thorben