2017-03-20 2 views
2

In meiner Anwendung muss ich viele Bilder laden. Ich würde wirklich eine Option verwenden, um die zuletzt geöffnete Datei auszuwählen, also möchte ich die zuletzt ausgewählte Datei wissen. Dokumentation sagt:getOpenFileName - Vorauswahl zuletzt geöffnet funktioniert nicht

QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"), 
              "/home", 
              tr("Images (*.png *.xpm *.jpg)")); 

Arbeitsverzeichnis des Dateidialog wird dir eingestellt werden. Wenn dir einen Dateinamen enthält, wird die Datei ausgewählt.

Also ich sollte den zuletzt geöffneten Dateipfad irgendwo speichern und dann anstelle von "/ home" einfügen. Aber das funktioniert nicht. Im geöffneten Dateidialog wird der Dateiname auf die letzten Zeichen zurückgesetzt und keine Datei ausgewählt. Was ist los? Ist es ein Fehler?

Mein aktueller Code:

QString fileName = QFileDialog::getOpenFileName(this, "Select file", 
    lastUsedFile, "Image Files (*.png *.jpg *.jpg *.bmp);; JPEG(*.jpg *.jpeg);; PNG(*.png);; BMP(*.bmp)"); 

if (!fileName.isEmpty()) 
    lastUsedFile = fileName; 

Was ich möchte, ist zu erreichen, die für die Datei zu ausgewählten und gescrollt werden.

Antwort

2

Es ist der dritte Parameter von QFileDialog :: getOpenFileName(). Und dann müssen Sie es in QSettings speichern.

zum Beispiel:

QString fileName = QFileDialog::getOpenFileName(
     this, tr("Open file"), 
     Settings.value(DEFAULT_DIR).toString(), 
     tr("Images (*.png *.xpm *.jpg)"); 

if (!fileName.isEmpty()) { 
    QDir curDir; 
    Settings.setValue(DEFAULT_DIR, curDir.absoluteFilePath(fileName)); 
} 
+0

Wie gesagt, das funktioniert nicht wie erwartet. Hier ist ein Beispiel:! [IMAGE] (https://image.ibb.co/k61oMF/dialog.jpg) Hier ist, was gespeichert wird und was in den Dialog geladen wird (und keine Datei ausgewählt ist, weil der Name nicht gültig ist) – Pawel

+0

Könnten Sie mir bitte auch Ihren Code zeigen? – michalis

+0

Eigentlich sollte das, was in den Dialog geladen wird, korrekt sein. Sie sehen die Auswahl auf dem Text auf Ihrem Screenshot? Versuchen Sie, die Home-Taste zu drücken, und Sie werden sehen, dass die Eingabe den vollständigen Namen der Datei enthält. Ich weiß wirklich nicht, ob dies ein Qt-Problem oder das Problem des Standard-Datei-Öffnen-Dialogs ist, da Sie das System eines standardmäßig in Windows verwenden. Sie können es jedoch mit der Option 'DontUseNativeDialog' überschreiben. –

Verwandte Themen