QSettings - File Chooser doit se rappeler le dernier répertoire
Question
envoyer un fichier à partir d'un emplacement, le prochain téléchargement doit pointer le dernier emplacement uploadé.
Comment puis-je exécuter à l'aide ainsi QSettings
?
La solution
Avant d'utiliser QSettings
, je suggère, dans votre main()
définir quelques informations sur votre demande et votre entreprise, informations que QSettings
utilisera:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
a.setApplicationName("test");
a.setOrganizationName("myorg");
a.setOrganizationDomain("myorg.com");
// etc...
return a.exec();
}
Ensuite, lors de la sélection d'un fichier avec QFile::getOpenFileName()
(par exemple), vous pouvez lire à partir d'une clé de QSetting
le dernier répertoire. Ensuite, si le fichier sélectionné est valide, vous pouvez stocker / mettre à jour le contenu de la clé:
void Widget::on_tbtFile_clicked() {
const QString DEFAULT_DIR_KEY("default_dir");
QSettings MySettings; // Will be using application informations
// for correct location of your settings
QString SelectedFile = QFileDialog::getOpenFileName(
this, "Select a file", MySettings.value(DEFAULT_DIR_KEY).toString());
if (!SelectedFile.isEmpty()) {
QDir CurrentDir;
MySettings.setValue(DEFAULT_DIR_KEY,
CurrentDir.absoluteFilePath(SelectedFile));
QMessageBox::information(
this, "Info", "You selected the file '" + SelectedFile + "'");
}
}
Autres conseils
Si vous parlez QFileDialog () vous pouvez spécifier le répertoire de départ dans le constructeur:
QFileDialog::QFileDialog(QWidget * parent = 0, const QString & caption =
QString(), const QString & directory = QString(), const QString & filter =
QString())
Vous pouvez également utiliser l'une des fonctions d'aide comme celui-ci qui vous permettent également de spécifier le répertoire de départ:
QString QFileDialog::getOpenFileName(QWidget * parent = 0,
const QString & caption = QString(), const QString & dir = QString(),
const QString & filter = QString(), QString * selectedFilter = 0,
Options options = 0)
Après chaque utilisation, conservez le chemin du répertoire qui a été sélectionné et utiliser la prochaine fois que vous affichez la boîte de dialogue.