2017-10-12 75 views
5

Używam aplikacji QT w mojej aplikacji . Wiem, że kiedy używam QFileDialog, historia jest zapisywana w rejestrze. Załóżmy, że mam wiele instancji QFileDialog w aplikacji. Czy mogę zapisać historię dla każdej instancji osobno? O ile sprawdziłem, wydaje się, że ten sam wpis rejestru jest aktualizowany dla każdej instancji.Historia wielu instancji QFileDialog

Odpowiedz

2

Możesz użyć różnych wpisów QSettings dla każdej instancji QFileDialog, zarządzając swoją historyczną długością i lokalizacją.

coś takiego

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

Czy możesz pomóc małej przykład – Jackzz

+0

Można śledzić dokumentację, Qt z ich podstawowego użytkowania http://doc.qt.io/qt-5/qsettings.html# podstawowe użycie –

+0

Po podstawowym użyciu możesz użyć przekierowania sekcji QFileDialog na przykład http://doc.qt.io/qt-5/qsettings.html#section-and-key-syntax –