QSettings - selector de archivos debe recordar el último directorio
Pregunta
Me cargar un archivo desde una ubicación, entonces la próxima carga tiene que apuntar la última ubicación de subida.
¿Cómo puedo lograr de este modo el uso de QSettings
?
Solución
Antes de utilizar QSettings
, sugeriría, en su main()
configurar algunas informaciones sobre su aplicación y su empresa, información que será QSettings
usando:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
a.setApplicationName("test");
a.setOrganizationName("myorg");
a.setOrganizationDomain("myorg.com");
// etc...
return a.exec();
}
A continuación, al seleccionar un archivo con QFile::getOpenFileName()
(por ejemplo), se puede leer desde una llave de QSetting
el último directorio. Entonces, si el archivo seleccionado es válido, puede almacenar / actualizar el contenido de la clave:
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 + "'");
}
}
Otros consejos
Si usted está hablando de QFileDialog () puede especificar el directorio inicial en el constructor:
QFileDialog::QFileDialog(QWidget * parent = 0, const QString & caption =
QString(), const QString & directory = QString(), const QString & filter =
QString())
O puede utilizar una de las funciones de ayuda como ésta que también le permiten especificar el directorio de inicio:
QString QFileDialog::getOpenFileName(QWidget * parent = 0,
const QString & caption = QString(), const QString & dir = QString(),
const QString & filter = QString(), QString * selectedFilter = 0,
Options options = 0)
Después de cada uso, almacenar la ruta del directorio que fue seleccionado y utilizarla la próxima vez que se muestra el cuadro de diálogo.