QSettings - 文件选择器应该记住上一次打开的目录

9

我从一个位置上传文件,下一次上传必须指向上次上传的位置。如何使用QSettings实现此功能?

2个回答

23

在使用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)

在每次使用后,存储所选择的目录路径,并在下次显示对话框时使用它。

有没有使用QSettings的想法? - user198725878

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接