2010-08-30 4 views

ответ

18

Перед использованием QSettings, я хотел бы предложить, в вашем main() установить несколько информации о приложении и вашей компании, информации, что QSettings будет использовать:

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

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

Затем, при выборе файла с QFile::getOpenFileName() (например), вы можете прочитать из ключа QSetting последний каталог. Затем, если выбранный файл действителен, вы можете сохранить/обновить содержимое ключа:

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

Если вы говорите о QFileDialog() вы можете указать начальный каталог в конструкторе:

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

Или вы можете использовать один из вспомогательных функций, как этот, которые также позволяют указать начальный каталог :

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

После каждого использования сохраните путь к каталогу, который был выбран, и используйте его при следующем отображении диалогового окна.

+0

любые идеи с использованием QSettings – user198725878

Смежные вопросы