Seite 1 von 1

ordnerbaum durchiterieren

Verfasst: 21. September 2007 11:56
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.

Verfasst: 21. September 2007 12:05
von Christian81
QDir::entry(Info)List()

Verfasst: 21. September 2007 12:10
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.

Verfasst: 21. September 2007 12:17
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

Verfasst: 21. September 2007 13:33
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);
				}
			
		}
		
	}
}