QFileDialog的多个实例的历史记录

Jac*_*kzz 5 c++ qt qfiledialog

QT在我的C++申请中使用.我知道当我使用时QFileDialog,历史记录会保存在注册表中.假设我QFileDialog在应用程序中有多个实例.我可以单独保存每个实例的历史记录吗?据我检查,似乎为每个实例更新了相同的注册表项.

Bas*_*nat 2

您可以为每个 QFileDialog 实例使用不同的 QSettings 条目,从而管理您的历史记录长度和位置。

类似的东西

void callFileDialog(QLinkedList<QString> & fileDialogHistory)
{
    QString fileName =  QFileDialog::getOpenFileName(Q_NULLPTR, "Open File", 
    QStandardPaths::writableLocation(QStandardPaths::HomeLocation));
    if(!fileName.isNull()){
        fileDialogHistory << fileName;
    }
}

void saveFileDialogHistory(QLinkedList<QString> & fileDialogHistory, QString 
fileDialogHistoryName = "History_Default")
{
    QSettings settings;
    settings.beginWriteArray(fileDialogHistoryName);
    int index = 0;
    for (QLinkedList<QString>::iterator it = fileDialogHistory.begin(); it != fileDialogHistory.end(); ++it){
        settings.setArrayIndex(index);
        settings.setValue("filePath", QFileInfo(*it).filePath());
        index++;
    }
    settings.endArray();
}
Run Code Online (Sandbox Code Playgroud)