我想用QSettings
救我的窗口的尺寸,所以我想出了這兩個功能,以節省&負載設置:QSettings爲什麼不存儲任何東西?
void MainWindow::loadSettings()
{
settings = new QSettings("Nothing","KTerminal");
int MainWidth = settings->value("MainWidth").toInt();
int MainHeight = settings->value("MainHeight").toInt();
std::cout << "loadSettings " << MainWidth << "x" << MainHeight << std::endl;
std::cout << "file: " << settings->fileName().toLatin1().data() << std::endl;
if (MainWidth && MainHeight)
this->resize(MainWidth,MainHeight);
else
this->resize(1300, 840);
}
void MainWindow::saveSettings()
{
int MainHeight = this->size().height();
int MainWidth = this->size().width();
std::cout << "file: " << settings->fileName().toLatin1().data() << std::endl;
std::cout << "saveSettings " << MainWidth << "x" << MainHeight << std::endl;
settings->setValue("MainHeight",MainHeight);
settings->setValue("MainWidth",MainWidth);
}
現在,我可以看到被提取的demensions在saveSettings
如預期,但沒有文件被創建,因此loadSettings
將始終只加載0。爲什麼是這樣?
完美與美麗!謝謝! – cerr
我認爲'QSettings'在堆上分配時不起作用,因爲它沒有被破壞(除非調用'delete')。並且'QSettings'的析構函數需要調用['sync()'](https://doc.qt.io/qt-5/qsettings.html#sync)函數。 – Mike
優秀點。同步功能可以手動調用以使其在堆上工作。 – phyatt