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