[gelöst] QFileDialog verliert selektierten Dateinamen
Verfasst: 2. Juli 2007 17:46
Ich benutze QFileDialog für das Öffnen, Speichern, Importieren und Exportieren von Dateien (nicht die statischen Funktionen wie "getSaveFileName" oder "getOpenFileName").
Der Dialog "Save as" erhält den aktuellen Dateinamen per selectFile(currentFile) als Default. Das klappt auch, solange ich das Verzeichnis gar nicht oder nur nach oben wechsle. Sobald ich ein Unterverzeichnis selektiere, leert sich das Eingabefeld "File name:" und der Dateiname muss von Hand eingetippt werden.
Kennt jemand eine Lösung für diese Eigenart von QFileDialog? Oder habe ich bei der Aufbereitung des Dialogs etwas falsch gemach?
Edit:
Das ist bei Trolltech schon bekannt und seit mitte Mai gefixt s. auch: http://trolltech.com/developer/task-tra ... &id=162944
Ist aber in der aktuellen Version wohl noch nicht angkommen.
Anton
Der Dialog "Save as" erhält den aktuellen Dateinamen per selectFile(currentFile) als Default. Das klappt auch, solange ich das Verzeichnis gar nicht oder nur nach oben wechsle. Sobald ich ein Unterverzeichnis selektiere, leert sich das Eingabefeld "File name:" und der Dateiname muss von Hand eingetippt werden.
Kennt jemand eine Lösung für diese Eigenart von QFileDialog? Oder habe ich bei der Aufbereitung des Dialogs etwas falsch gemach?
Code: Alles auswählen
bool MdiChild::saveAs()
{
QFileDialog dialog(this, tr("Save As"));
QStringList filters, files;
QString fileName;
QSettings settings;
filters << tr("binary equipment files (*.eqm)");
filters << tr("alfa numeric XML files (*.xqm)");
filters << tr("All files (*)");
dialog.setFilters(filters);
dialog.setFileMode(QFileDialog::AnyFile);
dialog.setDefaultSuffix("eqm");
dialog.setDirectory(theMainWin->recentDir("Files/recentSaveAs"));
dialog.selectFile(pageTitle());
dialog.setAcceptMode(QFileDialog::AcceptSave);
dialog.setConfirmOverwrite(true);
if (!dialog.exec())
return false;
files = dialog.selectedFiles();
if (files.isEmpty())
return false;
fileName = files[0];
if (fileName.isEmpty())
return false;
QFile file(fileName);
QFileInfo fileInfo(file);
theMainWin->addToResentFiles(fileName);
if (fileInfo.suffix().toLower() == "eqm") {
if (saveFile(fileName)) {
setCurrentFile(fileName);
emit pageTitleModified(this);
theMainWin->setWindowTitle(pageTitle());
settings.setValue("Files/recentSaveAs", fileName);
return true;
} else {
return false;
}
} else {
return exportFile(fileName);
}
}
Das ist bei Trolltech schon bekannt und seit mitte Mai gefixt s. auch: http://trolltech.com/developer/task-tra ... &id=162944
Ist aber in der aktuellen Version wohl noch nicht angkommen.
Anton