Portál AbcLinuxu, 15. května 2025 11:20

Dotaz: Qt: problém s QDirModel

4.8.2009 21:01 Dadam
Qt: problém s QDirModel
Přečteno: 390×
Odpovědět | Admin

Zdravím, s následujícím kódem:

#include <QApplication>
#include <QListView>
#include <QDirModel>

int main (int argc, char **argv)
{
	QApplication app(argc, argv);

	QDirModel model;
	model.setFilter(QDir::Files);

	QListView view;
	view.setModel(&model);
	view.show();

	view.setRootIndex(model.index("/home/adam/Hudba"));
	view.setRootIndex(model.index("/home/adam"));

	return app.exec();
}
 

mám problém. Ve výpisu složky 'adam' se mi zobrazí i složka 'Hudba'. Co s tím?

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

5.8.2009 10:22 cyclope | skóre: 10
Rozbalit Rozbalit vše Re: Qt: problém s QDirModel
Odpovědět | | Sbalit | Link | Blokovat | Admin

co to zkusit takhle?

 <code>
#include <QApplication>
#include <QListView>
#include <QDirModel>

int main (int argc, char **argv)
{
QApplication app(argc, argv);

QDirModel model;
model.setFilter(QDir::Files);

QStringList paths;

paths << "/home/adam/hudba" << "home/adam";

QListView view;
view.setModel(&model);
view.show();

view.setRootIndex(paths);


return app.exec();
}
</code>

vyzkouseno nemam, jen me to tak napadlo

Nula neni obycejne nic. Je to nic opirajici se o zelezny zakon sve nezbytnosti.
5.8.2009 11:03 Dadam
Rozbalit Rozbalit vše Re: Qt: problém s QDirModel

Co by to mělo udělat?

Ty dva řádky s nastavením rootIndexu musí zůstat dvěma řádky, dělá to uživatel, ne program

5.8.2009 11:09 cyclope | skóre: 10
Rozbalit Rozbalit vše Re: Qt: problém s QDirModel

jsem rikal, ze me to jen napadlo

me se totis zda, ze pri originalnim kodu, se rootindex nahradi druhym v poradi a z prvniho si pamatuje jen nazev slozky, kterou taky zobrazi. pri prohozeni tech cest by se mu totiz vypsala jen slozka hudba (tedy soubory v ni).

ja si tu jen premyslel, jak predat obe cesty najednou

no, tak zkusil jsem to. budu se na to moct podivat az doma

Nula neni obycejne nic. Je to nic opirajici se o zelezny zakon sve nezbytnosti.
5.8.2009 11:31 cyclope | skóre: 10
Rozbalit Rozbalit vše Re: Qt: problém s QDirModel

jeste me napadlo, zda neni problem v QListView

na qtforum jsem cetl v reakcich, ze je problem s QListView pri pouziti QDirModel->setFilter

problem byl tedy QT 4.0.(1?), ale pokud to neopravili, tak je to taky moznost

co to zkusit bez filtru, zda to vypise obe slozky, nebo pripadne zkusit QTreeView namisto QListView?

Nula neni obycejne nic. Je to nic opirajici se o zelezny zakon sve nezbytnosti.
6.8.2009 09:46 Dadam
Rozbalit Rozbalit vše Re: Qt: problém s QDirModel

Používám Qt 4.5.0 (aspoň podle generovaného makefile).

Kde jsi to zjistil? Já to hledal všude možně, a nenašel nic.

Bez filtru to vypisuje všechno tak, jak má, a QTreeView dělá to samé.

6.8.2009 12:56 cyclope | skóre: 10
Rozbalit Rozbalit vše Re: Qt: problém s QDirModel

na www.qtforum.org byla zminka o problemech s QListView pri pouziti filtru na QDirModel

abych ale pravdu rek, nepamatuju se v jake souvislosti.

pri pouziti TreeView se take zobrazi slozka (v tvem pripade HUDBA) jako podadresar, ktery lze po te rozbalit. v ListView by to melo byt obdobny s tim, ze bys musel do kodu dopsat udalosti pro stisk tlacitka, aby se ti podslozka rozbalila.

a zjistil jsem, v prvnim prispevku, kde jsem se snazil o upravu kodu, jsem napsal naprostou kravinu :). jsem ja to ale vul :)

Nula neni obycejne nic. Je to nic opirajici se o zelezny zakon sve nezbytnosti.
9.8.2009 09:29 mikro
Rozbalit Rozbalit vše Re: Qt: problém s QDirModel
Odpovědět | | Sbalit | Link | Blokovat | Admin

Odhliadnuc od faktu, ze ten kod nedava moc zmysel (prepisujes nastavenie root indexu) treba povedat, ze je tam fakt bug aj v Qt -- ked prehodis setRootIndex() volania (cize najpr /home/adam a az potom /home/adam/Hudba) tak rychlo zistis, ze kod sa chova tak ako ma, cize vypise obsah /home/adam bez "Hudba". Ale tak ako to mas to vypisuje aj to Hudba, co je dost divne a nahlasil by som to ako bug.

Kazdopadne, v QDirModeli nemozes nastavovat viac rootov takymto sposobom...

9.8.2009 09:33 mikro
Rozbalit Rozbalit vše Re: Qt: problém s QDirModel

ehm, malo byt "...chova tak ako ma, cize vypise obsah /home/adam/Hudba." nie "/home/adam bez Hudba".

14.8.2009 11:10 Dadam
Rozbalit Rozbalit vše Re: Qt: problém s QDirModel

Kód nedává smysl, protože je ořezaný na úplné minimum. Účelem není nastavovat víc rootů, ale měnit ho za běhu programu. Chtěl jsem dosáhnout podobné funkce jako má přehrávač quod libet: mít dva pohledy, v jednom adresářovou strukturu, ve druhém obsah aktuálně vybraného adresáře. Nakonec to ale budu muset stejně udělat jinak.

Jak to nahlásit? Ještě nikdy jsem to nedělal

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.