2017-10-12 39 views
5

我在我的C++應用程序中使用QT。我知道當我使用QFileDialog時,歷史記錄保存在註冊表中。假設我在應用程序中有多個QFileDialog實例。我可以分別保存每個實例的歷史記錄嗎?據我檢查,似乎相同的註冊表項更新爲每個實例。QFileDialog的多個實例的歷史

回答

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(); 
} 
+0

可以請你一個小例子幫助 – Jackzz

+0

你可以按照Qt的機制的文檔與他們的基本用法http://doc.qt.io/qt-5/qsettings.html#基本用法 –

+0

基本用法之後,您可以使用部分foreach QFileDialog,例如http://doc.qt.io/qt-5/qsettings.html#section-and-key-syntax –