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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top