Seite 1 von 1

Darstellung eines float über QString

Verfasst: 30. Mai 2009 00:53
von Luftballon
Hallo zusammen!

Ich liste die Dateien eines Verzeichnisses mit deren Größe in Byte und Megabyte auf. Dabei muss ich einen Methodenrückgabewert von int nach float umwandeln. Den daraus entstehenden float-Wert stelle ich über die Methode "sprintf" von QString dar. Allerdings benötigt diese Methode eine Instanz von QString. Gibt es noch eine einfachere Möglichkeit?

Und allgemein, kann man evtl. den nachfolgenden Code auch kürzer gestalten?

Code: Alles auswählen

QList<QFileInfo> files = dir.entryInfoList();
QList<QFileInfo>::Iterator it;
it = files.begin();
while(it != files.end()) {
	if((*it).isDir()) {
		str.append("[DIR]\t");
	} else {
		str.append("[FILE]\t");
	}
	str.append((*it).fileName());
	str.append("\t\t");
	
	str.append(QString::number((*it).size()));
	str.append(" Byte\t\t");
	
	float size = (float)(*it).size() / 1024 / 1024;
	QString s;
	str.append(s.sprintf("%5.3f", size));
	str.append(" Megabyte\t");
	
	str.append("\n");
	++it;
}

Verfasst: 30. Mai 2009 01:08
von -=Freaky=-
QString::number() ist eine statische methode, die koenntest du evtl. benutzen.
sieh dir zur not mal die doku dazu an.

mfg,
julian

Verfasst: 30. Mai 2009 01:14
von Luftballon
Oh ja, da war ich wohl Blind! Ich mach wohl mal lieber Schluss für heute. ;-)

Der folgende Code funktioniert wunderbar:

Code: Alles auswählen

str.append(QString::number(size, 'f', 3));