Seite 1 von 1

Fehler beim Löschen einer Datei

Verfasst: 13. Januar 2008 22:01
von Linuxguru
hallo,

ich möchte aus einem qdirmodel eine datei löschen. die darstellung des verzeichnisbaums erfolgt mit qtreeview. bei der ersten datei geht alles noch, wenn ich die 2. löschen möchte springt das qdirmodel nach dem löschen in ein anderes verzeichnis. meisstens ist es /bin.

hier mal ein auszug der löschen funktion

Code: Alles auswählen

void MyWidget::treeListRemove()
{
	QModelIndex modelIndex = treeList->currentIndex();
	if( !modelIndex.isValid() )
		return;
	bool ok;
	if( model->fileInfo(modelIndex).isDir() )
	{
		ok = model->rmdir( modelIndex );
	}
	else
	{
		ok = model->remove( modelIndex );
	}
	if (!ok)
		QMessageBox::information( this, tr("Remove"), tr("Failed to remove %1").arg(model->fileName(modelIndex)) );
}

Verfasst: 16. Januar 2008 10:45
von Linuxguru
hab mein Problem jetzt so gelöst.. ich lösche direkt über QDir und QFile.

Code: Alles auswählen

void MyWidget::treeListRemove()
{
	QModelIndex index = treeList->currentIndex();
	QString itemName = model->filePath( index );
	QString fileName = model->fileName( index );
	QString filePath = itemName.left(itemName.lastIndexOf('/'));
	if( !index.isValid() )
		return;

	if( model->fileInfo(index).isDir() )
	{
		QDir dir( itemName );
		dir.rmdir( itemName );
	}
	else
	{
		QFile file( fileName );
		file.remove( filePath+"/"+fileName );
	}
	treeList->setCurrentIndex(model->index("/"));
	QModelIndex newindex = treeList->currentIndex();
	model->refresh(newindex);
}
evtl kann ja mal noch jemand testen, ob es vielleicht einen bug in QDirModel::remove() und QDirModel::rmdir() gibt.

Verfasst: 16. Januar 2008 12:16
von upsala
evtl kann ja mal noch jemand testen, ob es vielleicht einen bug in QDirModel::remove() und QDirModel::rmdir() gibt.
Welche Qt-Version, welches Betriebssystem, im Task-Tracker schon mal nachgeschaut?

Verfasst: 16. Januar 2008 15:19
von Linuxguru
hallo,

OS = Debian lenny
QT = 4.3.3

im tasktracker hab ich nachgeschaut, aber nix passendes an bugs gefunden. hab vermutet das der fehler evtl an mir liegt.

daher auch meine forumfrage :-)