Seite 1 von 1

[neues Problem] Daten in Explorer-mäßigem widget anzeigen

Verfasst: 21. September 2005 03:55
von Esleborn
hi,
mir wurde aufgetragen folgedes für hierarchisch sortierten Daten zu tun:
Ein widget, dass die Daten quasi wie "der Windows Explorer". Es soll 'Boxen' (entsprechend Verzeichnissen) und Daten (entsprechend Dateien) geben, Doppelklick auf eine Box öffnet diese, Doppelklick auf eine Date zeigt diese in einem anderen Widget an, man kann Daten und/oder Boxen von einer Box in eine andere verschieben oder markieren und eine "Aktion" damit ausführen, sowie neue Boxen erstellen können. Und jetzt kommt das eigentliche Problem. Das alles soll sozusagen frei sortierbar/verschiebbar sein wie der Desktop (maximal mit Raster) und nicht als Baumstruktur (QTreeWidget) angezeigt werden, sondern eben "wie das Ding in der Mitte vom Windows Explorer - mit den großen Symbolen, wo ein Doppelklick das im selben Fenster öffnet".
Hoff' man kann verstehen was gemeint ist...

Hat einer ne Idee wie man das machen könnt? QTreeWidgetItem wäre die Baumstruktur Ansicht; und die ist nicht die gewünschte...

Danke schon mal für euere Ideen

Elgrimm Esleborn

Re: Daten in einem Explorer-mäßigem widget anzeigen

Verfasst: 21. September 2005 07:14
von macman
Esleborn hat geschrieben:QTreeWidgetItem wäre die Baumstruktur Ansicht; und die ist nicht die gewünschte...
Unter Qt3 gab es QIconView, bei Qt4 versuch es mit einem QListView oder QListWidget und dem entsprechenden ViewMode (QListView::setViewMode(QListView::IconMode)).

Verfasst: 21. September 2005 14:11
von Esleborn
danke! genau das hab ich gesucht...

Neues Problem... wiederherstellen des Status einer "Box

Verfasst: 27. September 2005 22:28
von Esleborn
hi,
da das Setzen und Bewegen von Items nicht möglich ist, würd ich gern wissen (um eine "move" Funktion) zu implementieren, wie ich ein Drag&Drop simulieren könnte? QDrag->start ( ) kann ja nicht aufgerufen werden, da dann das Programm einfriert, da es ja auf ein Ende des Drag wartet, das nicht kommen kann...

Ich hab jetzt folgede Funktion (Elementfunktion der von QListWidget erbenden Klasse) versucht:

Code: Alles auswählen

   QMouseEvent clickMouseEvent ( QEvent::MouseButtonPress, f_itemPos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier );
   QMouseEvent releaseMouseEvent ( QEvent::MouseButtonRelease, f_itemPos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier );
   QMouseEvent releaseMouseEvent2 ( QEvent::MouseButtonRelease, f_newItemPos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier );
   QMouseEvent moveMouseEvent ( QEvent::MouseMove, f_newItemPos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier );

   mousePressEvent ( &clickMouseEvent );
   mouseReleaseEvent ( &releaseMouseEvent );
   mousePressEvent ( &clickMouseEvent );
   mouseMoveEvent ( &moveMouseEvent );
   mouseReleaseEvent ( &releaseMouseEvent2 );
(wobei f_itemPos die alte Position des Items und f_newItemPos die zu erreichende Position des Items ist)
Ziel dieses Codes ist es auf das Item zu "klicken" um es zu markieren anschließend eine Bewegung mit erneut gedrückter Maustaste durchzuführen und anschließend loszulassen. Das sollte meiner Meinung zu einem Drag&Drop führen, wie von mir beabsichtigt. Tut es aber nicht...

Hat einer ne Idee wo mein Fehler liegt?

Danke
Elgrimm Esleborn

PS: Benötigt wird dies um das Aussehen (Anordnung der Icons) des "Explorers" beziehungsweiße des Inhalts einer "Box" wiederherzustellen

Re: Neues Problem... wiederherstellen des Status einer "

Verfasst: 28. September 2005 07:25
von macman
Esleborn hat geschrieben:Hat einer ne Idee wo mein Fehler liegt?
Ich versteh immer noch nicht genau was dein Ziel ist. Hast Du dir die Drag&Drop Beispiele mal angesehen? Da ist doch alles dabei was Du suchst. Oder willst Du explorermäßig zwischen Listenansicht und frei verschiebbaren Icons wechseln? Dann nimm verschiedene Widgets, bevor Du versuchst so eine Krücke der ListView beizubringen.

Verfasst: 30. September 2005 14:03
von Esleborn
ich will, dass ich auch ohne Nutzereingriff die Icons verschieben kann. Dafür muss ich, da jede andere Schnittstelle fehlt, ein Drag&Drop simulieren. Dabei darf ich NICHT (qdrag).start ( ) aufrufen, da sonst kein Drop kommt, da auf ein drop des Users gewartet wird. Jetzt verstanden?

Verfasst: 30. September 2005 15:30
von macman
Esleborn hat geschrieben:Jetzt verstanden?
Ja :) Mal ganz blöd gefragt, warum überschreibst Du nicht einfach QIcon, wenn dir gewisse Funktionalität, wie setPosition(int x, int y), fehlt?

Verfasst: 30. September 2005 21:42
von Esleborn
naja
ich will ja nciht nur das icon verschieben, sonder das "gesamte" QListWidgetItem... und wenn du mir sagst wie ich diese Move Funktion heißen müsste?

Elgrimm Esleborn

Verfasst: 1. Oktober 2005 08:33
von macman
Da muß ich passen. Ich habe mich noch nicht mit dem IconMode einer View beschäftigt und am Wochenende gucke ich da nicht rein :) Drag&Drop habe ich bisher nur bei einem QTreeWidget realisiert und dafür brauchte ich auch meine eigene TreeWidget-Klasse. Wenn Du eine Lösung findest, lass es uns wissen.

Verfasst: 1. Oktober 2005 09:12
von Esleborn
ich muss jetzt ja auch nicht drag&drop einbauen, sondern nur drag&drop simulieren. Sprich die mouseevent, die dann das drag&drop auslösen simulieren...
dazu ne idee?

Elgrimm Esleborn

Verfasst: 14. Oktober 2005 11:33
von Esleborn
tsja leider hab ich immer noch keine Lösung gefunden, vllt mittlerweile einer ne Idee?

danke

Elgrimm Esleborn