2017-10-12 15 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는 documention을 수행 할 수 – Jackzz

+0

작은 예를 도와 주시겠습니까 basic-usage –

+0

기본 사용법 후에 foreach QFileDialog 섹션 (예 : http://doc.qt.io/qt-5/qsettings.html#section-and-key-syntax)을 사용할 수 있습니다. –