简述
Qt提供的QSettings非常好用,Windows下可以指定存ini文件还是存注册表,Linux下存ini文件;但是有个不友好的地方就是QSettings使用QMap结构,而QMap底层是红黑树,所以就导致了QSettings保存的ini文件中key会自动排序;
为了解决这个问题这里对保存的数据做了点修改达到想要的效果,其实QSettings也提供了自定义规则的读写,不过需要调用"registerFormat"重写注册读写函数规则,比较繁琐有需要可以自行了解下;
实现
第一种是保存的同一类数据,对key没有要求,所以直接以序号作为key,当读取的时候按序号读取数据就是保存时候的顺序:
void MainWindow::saveToIni()
{
QSettings ini("./settings", QSettings::IniFormat);
ini.beginGroup("Group");
ini.setValue("count", 10);
for (int i = 0; i < 10; i++)
{
ini.setValue(QString("%1x").arg(i+1), i+1);
}
ini.endGroup();
ini.sync();
}
void MainWindow::loadFmIni()
{
QSettings ini("./settings", QSettings::IniFormat);
ini.beginGroup("Group");
int count = ini