我从一个位置上传文件,下一次上传必须指向上次上传的位置。如何使用QSettings
实现此功能?
在使用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 + "'");
}
}
如果你在谈论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)