0
我試圖在QCache中存儲QStrings但我關閉應用程序並再次運行後,緩存又是空的。Qcache不會在Qt 5.6中存儲任何內容
這裏是我的cpp的代碼:
QString fileName = QFileDialog::getOpenFileName(this, tr("Select a ply file"), homeDir, ".ply (*.ply)");
fileCache.insert(12, &fileName);
qDebug() << QString("# items in cache: ") + QString::number(fileCache.count());
ui->file_name_textEdit->insertPlainText(fileName);
,我已經在頭部聲明緩存:
QCache<int, QString> fileCache;
我也試圖存儲TMP值,因爲之前我收到此內存泄漏錯誤:
free(): invalid size: 0x00007fffa0d96600 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x77725)[0x7fed3ebc1725]
/lib/x86_64-linux-gnu/libc.so.6(+0x7ff4a)[0x7fed3ebc9f4a]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7fed3ebcdabc]
/home/pendar/projects/paintsquad/build/pcl_visualizer(_ZN6QCacheIi7QStringE5clearEv+0x39)[0x473b0f]
/home/pendar/projects/paintsquad/build/pcl_visualizer(_ZN6QCacheIi7QStringED1Ev+0x19)[0x46f3d1]
/home/pendar/projects/paintsquad/build/pcl_visualizer(_ZN9PCLViewerD1Ev+0x6a)[0x468532]
/home/pendar/projects/paintsquad/build/pcl_visualizer(main+0x83)[0x463c79]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7fed3eb6a830]
/home/pendar/projects/paintsquad/build/pcl_visualizer(_start+0x29)[0x463b29]
所以,我想這一點:
QString *tmp = new QString("hi");
fileCache.insert(12, tmp);
現在我沒有收到任何錯誤,但重新啓動時緩存仍爲空!
QCache不會在關閉應用程序時持續存在。 – drescherjm
這就是我所懷疑的,但我無法確定文檔中是否屬於這種情況。我想可能[QSettings](http://doc.qt.io/qt-5/qsettings.html)在這種情況下是一個更好的類。 – Pendar
是'QSettings'將是你想要的選擇.. – drescherjm