2017-10-12 18 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

よう

何かあなたはあなたが彼らの基本的な使い方http://doc.qt.io/qt-5/qsettings.html#でのQt、ドキュメントを参照して従うことができる小さな例 – Jackzz

+0

で助けてください基本的な使い方 –

+0

基本的な使い方の後、セクションforeach QFileDialog、例えばhttp://doc.qt.io/qt-5/qset-5.qt-/qsettings.html#section-and-key-syntaxを使用することができます –