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

Alles rund um die Programmierung mit Qt
Antworten
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

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

Beitrag 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
Zuletzt geändert von Esleborn am 27. September 2005 22:28, insgesamt 2-mal geändert.
Glaube an eine Lösung, nur dann kannst du auch eine finden.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

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

Beitrag 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)).
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag von Esleborn »

danke! genau das hab ich gesucht...
Glaube an eine Lösung, nur dann kannst du auch eine finden.
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Neues Problem... wiederherstellen des Status einer "Box

Beitrag 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
Glaube an eine Lösung, nur dann kannst du auch eine finden.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

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

Beitrag 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.
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag 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?
Glaube an eine Lösung, nur dann kannst du auch eine finden.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag 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?
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag 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
Glaube an eine Lösung, nur dann kannst du auch eine finden.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag 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.
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag 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
Glaube an eine Lösung, nur dann kannst du auch eine finden.
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag von Esleborn »

tsja leider hab ich immer noch keine Lösung gefunden, vllt mittlerweile einer ne Idee?

danke

Elgrimm Esleborn
Glaube an eine Lösung, nur dann kannst du auch eine finden.
Antworten