ordnerbaum durchiterieren

Alles rund um die Programmierung mit Qt
Antworten
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

ordnerbaum durchiterieren

Beitrag von CaptnChaos »

Ich brauch mal eure Hilfe...
Irgendwie ist heute der Wurm drin.

Ich muss die Ordner eines USB-Sticks durchsuchen (alle finden) und dann ein
Menü dementsprechend aufbauen. Also Unterordner = Untermenü.
und die Dateien werden dann als QActions ins dazugehörige Menü geadded.
Das soll dan etwa so aussehen wie das Starmenü von Windows oder das KDE- Menü.

Aber ich bekomme keinen Ansatz.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

QDir::entry(Info)List()
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

ja, soweit war ich auch schon... ich habe jetzt einen Prototyp, wenn der Funktioniert, ist gut, sonst poste ich den mal und dann könnt ihr euch dran auslassen.
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

Code: Alles auswählen

void Sticky::findAllFiles(QDir curDir)
{
	
	QFileInfoList temInfo = curDir.entryInfoList(QStringList(), QDir::NoDotAndDotDot);
	for(int i = 0; i < temInfo.size(); ++i)
	{
		if(temInfo[i].isFile())
		{
			if(curDir == QDir::current())
			{
				hauptMenu->addAction(temInfo[i].fileName());
			}
			else
			{
				subMenus.value(curDir.dirName())->addAction(temInfo[i].fileName());
			}
		}
		else if(temInfo[i].isDir())
		{
			if(curDir == QDir::current())
			{
				QMenu *menuadd = new QMenu(temInfo[i].dir().dirName());
				hauptMenu->addMenu(menuadd);
				subMenus.insert(temInfo[i].dir().dirName(), menuadd);
				findAllFiles(temInfo[i].dir());
			}
			else
			{
				QMenu *menuadd = new QMenu(temInfo[i].dir().dirName());
				subMenus.value(curDir.dirName())->addMenu(menuadd);
				subMenus.insert(temInfo[i].dir().dirName(), menuadd);
				findAllFiles(temInfo[i].dir());
			}
		}
		
	}
}
viel spass
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

ich habs.
wens interresiert:

Code: Alles auswählen

void Sticky::findAllFiles(QDir curDir)
{
	//curDir.setFilter(QDir::NoDotAndDotDot);
	QFileInfoList temInfo;
	temInfo = curDir.entryInfoList(QDir::NoDotAndDotDot | QDir::AllDirs | QDir::Files);
	
	for(int i = 0; i < temInfo.size(); ++i)
	{
		if(temInfo[i].isFile())
		{
			if(curDir == QDir::current())
			{
				hauptMenu->addAction(temInfo[i].fileName());
				//qDebug(temInfo[i].fileName().toAscii());
			}
			else
			{
				subMenus.value(curDir.dirName())->addAction(temInfo[i].fileName());
			}
		}
		else if(temInfo[i].isDir())
		{
			
				if(curDir == QDir::current())
				{
					QMenu *menuadd = new QMenu(temInfo[i].fileName());
					
					qDebug(temInfo[i].fileName().toAscii());
					subMenus.insert(temInfo[i].fileName(), menuadd);
					findAllFiles(QDir(temInfo[i].filePath()));
					hauptMenu->addMenu(menuadd);
				}
				else
				{
					qDebug(temInfo[i].fileName().toAscii());
					QMenu *menuadd = new QMenu(temInfo[i].fileName());
					subMenus.insert(temInfo[i].fileName(), menuadd);
					findAllFiles(QDir(temInfo[i].filePath()));
					subMenus.value(curDir.dirName())->addMenu(menuadd);
				}
			
		}
		
	}
}
Antworten