2010-08-30 12 views

risposta

18

Prima di utilizzare QSettings, vorrei suggerire, nella vostra main() per impostare alcune informazioni sulla vostra applicazione e la vostra azienda, informazioni che QSettings prevede di utilizzare:

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    a.setApplicationName("test"); 
    a.setOrganizationName("myorg"); 
    a.setOrganizationDomain("myorg.com"); 

    // etc... 
    return a.exec(); 
} 

Poi, quando si seleziona un file con QFile::getOpenFileName() (per esempio), puoi leggere da una chiave di QSetting l'ultima directory. Quindi, se il file selezionato è valido, è possibile memorizzare/aggiornare il contenuto della chiave:

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 + "'"); 
    } 
} 
1

Se si sta parlando di QFileDialog() è possibile specificare la directory di partenza nel costruttore:

QFileDialog::QFileDialog(QWidget * parent = 0, const QString & caption = 
    QString(), const QString & directory = QString(), const QString & filter = 
    QString()) 

oppure è possibile utilizzare una delle funzioni di supporto come questo che consentono inoltre di specificare la directory di partenza :

QString QFileDialog::getOpenFileName(QWidget * parent = 0, 
    const QString & caption = QString(), const QString & dir = QString(), 
    const QString & filter = QString(), QString * selectedFilter = 0, 
    Options options = 0) 

Dopo ogni utilizzo, memorizzare il percorso della directory che è stato selezionato e usarlo la prossima volta che si visualizza la finestra di dialogo.

+0

qualsiasi idea con l'utilizzo di QSettings – user198725878