PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : QT, QListView und Baumansicht



Eremit
04-03-2002, 14:06
hallo,

kann mir jemand mal erklären wie ich eine baumansicht hinbekomme? diese sollte genauso aussehen wie z.b. der konqueror wenn ich ins home-verzeichnis gehe. damit meine ich eine qlistview ohne dass die dateien in einem anderen fenster dargestellt werden. ausserdem sollte beim klicken auf das "+"-zeichen der unterordner geöffnet werden.

eigentlich dürfte es diese lösung schon x-mal geben aber irgendwie finde ich nichts ordentliches.

Eremit

micha
04-03-2002, 14:32
Hi,

bei der Dokumentation der QT-Bibliotheken ist ein Beispiel mit QListView dabei, das genau Deinen Ansprüchen gerecht wird:

http://doc.trolltech.com/2.3/dirview-main-cpp.html

Gruß micha

anda_skoa
04-03-2002, 17:59
Aus dem Gedächtnis, muß nicht ganz so gehen



QListView* listView = new QListView(0, "listview");
QListViewItem* rootItem = new QListViewItem(listView);
QListViewItem* subItem = new QListViewItem(rootItem);

listView->addColumn("Spalte1");
listView->setRootIsDecorated(true); // [+] for root item


Ciao,
_

Eremit
05-03-2002, 17:34
danke für eure hilfen.

die dirview.cpp war genau das was ich suchte..... nur:

ich habe mich überhaupt noch nicht in das thema klassen eingearbeitet und somit habe ich davon auch überhaupt keine ahnung. ich hoffe aber trotzdem auf eure mithilfe. die datei kann ich so natürlich nicht verwenden.
daher habe ich folgende dateien abgespeichert:
http://www.dersataler.de/burn/kburnorama.h
http://www.dersataler.de/burn/kburnorama.cpp
http://www.dersataler.de/burn/dirview.cpp
http://www.dersataler.de/burn/dirview.h

in der kburnorama.cpp-datei habe ich schon eine qlistview deklariert:
dateien_audio = new QListView( tab, "dateien_audio" );

diese soll nun meine baumansicht erhalten. wie kann ich das original-beispiel nun ändern, damit ich das so hinbekomme???

Eremit

anda_skoa
06-03-2002, 12:24
Hi!

Ich hab jetzt gerade nicht soviel Zeit, ich kann mir das genauer erst am Abend ansehen.



bdateien_audio = new QListView( tab, "bdateien_audio" );
bdateien_audio->addColumn( i18n( "Dateien" ) );
bdateien_audio->addColumn( i18n( "Pfad" ) );
Layout19->addWidget( bdateien_audio );


Mir ist nicht gnaz klar, wie der Treeview aussehen soll.
In der ersten Spalte steht ein Dateiname und in der zweiten der Pfad dazu?

Wenn du die QListViewItems anlegst, dann muß das so aussehen, wenn du folgendes erreichen willst
item1 pfad1
|
+-subitem1 pfad2
+-subitem2 pfad3



QListViewItem* item = new QListViewItem(bdateien_audio", "item1", "pfad1");
QListViewItem* subitem = new QListViewItem(item, "subitem1", "pfad2");
subitem = new QListViewItem(item, "subitem2", "pfad3");


Zusammengefaßt.
ListViewItems der obersten Ebene haben den ListView als parent (erster Parameter).
Die Subitems haben ein ListItem als parent.

Im Beispiel ist "item1" der parent von "subitem1" und "subitem2".
(praktisch wie zwei Dateien im Verzeichnis "item1")

Wenn man vor dem String "item1" ein [+] ahbe möchte, dann


bdateien_audio->setRootIsDecorated(true);


Ciao,
_