2017-10-12 34 views
5

Tôi đang sử dụng QT trong ứng dụng C++ của mình. Tôi biết rằng khi tôi sử dụng QFileDialog, lịch sử được lưu trong sổ đăng ký. Giả sử tôi có nhiều phiên bản QFileDialog trong ứng dụng. Tôi có thể lưu lịch sử cho từng cá thể riêng biệt không? Theo như tôi đã kiểm tra, có vẻ như cùng một mục đăng ký được cập nhật cho từng trường hợp.Lịch sử của nhiều phiên bản của QFileDialog

Trả lời

2

Bạn có thể sử dụng các mục nhập QSettings khác nhau cho mỗi cá thể QFileDialog, với việc bạn quản lý chiều dài lịch sử và vị trí của mình.

một cái gì đó như thế

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

bạn có thể vui lòng giúp đỡ với một ví dụ nhỏ – Jackzz

+0

Bạn có thể làm theo các documention Qt với việc sử dụng cơ bản của họ http://doc.qt.io/qt-5/qsettings.html# sử dụng cơ bản –

+0

Sau khi sử dụng cơ bản bạn có thể sử dụng phần foreach QFileDialog ví dụ http://doc.qt.io/qt-5/qsettings.html#section-and-key-syntax –

Các vấn đề liên quan