Dateinamen mit '%20' machen Probleme
Verfasst: 5. August 2010 19:46
Hallo!
Ich habe ein blödes Problem. Folgendes möchte/habe ich realisiert:
a) Dateien über ein Auswahlfenster auswählen.
b) Die Dateinamen in einem QTableWidget anzeigen lassen.
c) Den Inhalt des Widgets löschen lassen
Funktioniert bisher auch super. Außer dann, wenn die Dateinamen anstatt eines Spaces ein '%20' enthalten. Dies bestrifft eigentlich nur Dateien, die man sich aus dem Internet heruntergeladen hat.
Folgendes kann ich beobachten:
Nach der Auswahl der Dateien liegen die Pfade inkl. Namen in einer QStringList mit dem Namen 'files'. Schon dort scheint es die ersten Veränderungen zu geben.
Folgende Dateinamen verwende ich:
Die '%20' bei [003] und [005] sieht man nicht. Die '%20' bei [006] habe ich menuell hinzugefügt. Diese werden also auch so angezeigt. Ich glaube, da wird ein %2520 draus gemacht.
Eine Testdatei heißt bei mir "[006]%20%20Test.wmv". Gebe ich den Namen aber aus, wir daraus ein "[006]%20 Test.wmv". Die Ausgabe erfolgt über ein QLabel:
Auf die selbe Art fülle ich mein QTableWidgetItem. Die schon im QLabel verstümmelten Namen werden aber erst garnicht angezeigt!
Dann versuche ich die Einträge in der Tabelle zu löschen. Statt 6 habe ich also nur 3 Dateien in der Tabelle. Das Löschen erfolgt über:
Das "lustige" ist jetzt, in fileList ist zwar kein Eintrag mehr drin, in der Tabelle wird aber noch genau 1 Eintrag angezeigt und lässt sich auch durch wiederholtes removeRow() nicht entfernen.
Ich raff das gerade nicht so ganz. Wo liegt denn da der Fehler?
Gruß
Thorsten
Ich habe ein blödes Problem. Folgendes möchte/habe ich realisiert:
a) Dateien über ein Auswahlfenster auswählen.
b) Die Dateinamen in einem QTableWidget anzeigen lassen.
c) Den Inhalt des Widgets löschen lassen
Funktioniert bisher auch super. Außer dann, wenn die Dateinamen anstatt eines Spaces ein '%20' enthalten. Dies bestrifft eigentlich nur Dateien, die man sich aus dem Internet heruntergeladen hat.
Folgendes kann ich beobachten:
Nach der Auswahl der Dateien liegen die Pfade inkl. Namen in einer QStringList mit dem Namen 'files'. Schon dort scheint es die ersten Veränderungen zu geben.
Folgende Dateinamen verwende ich:
Code: Alles auswählen
[001]video1 mit ton.mp4
[002]Video2 ohne Ton Inhalt:Dies und Das.mp4
[003]AAA%20 BBB%20 CCC DDD & EEE FFF%20 [20100316].wmv
[004]XXX YYY - ABCDEFG HHH.avi
[005]xxxyyy 123456%20 aaa vvvvv & wwww ssss%20 s.wmv
[006]%20%20Test.wmv
Eine Testdatei heißt bei mir "[006]%20%20Test.wmv". Gebe ich den Namen aber aus, wir daraus ein "[006]%20 Test.wmv". Die Ausgabe erfolgt über ein QLabel:
Code: Alles auswählen
QString tmp;
QFile file(currentDir.absoluteFilePath(files[i]));
tmp = QString(QFileInfo(file).baseName());
QLabel *label = new QLabel(tmp);
label->show();
Code: Alles auswählen
QTableWidget *filesTable;
...
QFile file(currentDir.absoluteFilePath(files[i]));
qint64 size = QFileInfo(file).size();
QTableWidgetItem *fileNameItem = new QTableWidgetItem(QString("%1").arg(QFileInfo(file).baseName()));
int row = filesTable->rowCount();
filesTable->insertRow(row);
filesTable->setItem(row, 0, fileNameItem);
...
Dann versuche ich die Einträge in der Tabelle zu löschen. Statt 6 habe ich also nur 3 Dateien in der Tabelle. Das Löschen erfolgt über:
Code: Alles auswählen
QTableWidget *filesTable;
...
for (int i=0; i < filesTable->rowCount(); ++i)
{
filesTable->removeRow(i);
}
filesList.clear();
filesTable->update();
...
Ich raff das gerade nicht so ganz. Wo liegt denn da der Fehler?
Gruß
Thorsten