我在QT
应用程序中使用C++
。我知道当我使用QFileDialog
时,历史记录会保存在注册表中。假设我在应用程序中有多个QFileDialog
实例。我可以单独保存每个实例的历史记录吗?据我检查,似乎每个实例都更新了相同的注册表项。
答案 0 :(得分: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();
}