我尝试使用Qt QSettings读取和编辑桌面条目.desktop
文件。问题是这些文件包含由分号;
分隔的多个值的键。我尝试将这些作为QStringList阅读,但没有运气。我只得到第一个值。例如:
Keywords=disc;cdrom;dvd;burn;audio;video;
Categories=GTK;GNOME;AudioVideo;Audio;Video;DiscBurning;
MimeType=application/x-cd-image;application/x-cdrdao-toc;application/x-cue;application/x-toc;audio/x-scpls;audio/x-ms-asx;audio/x-mp3-playlist;audio/x-mpegurl;application/x-brasero;x-content/audio-cdda;x-content/video-dvd;x-content/video-vcd;x-content/video-svcd;x-content/image-picturecd;
获取值:
settings.value("Desktop Entry/MimeType").toStringList();
settings.value("Desktop Entry/MimeType").toString();
仅返回第一个值(在我的示例中为disc
,GTK
或application/x-cd-image
)。
如何从这些键中返回完整值?如何使用QSettings
将其写回来?
答案 0 :(得分:2)
更新(首次尝试完全没用)
变体1
QMap<QString, QString> settings;
QFile inFile("<input filename.ini>");
if(inFile.open(QIODevice::ReadOnly))
{
QTextStream in(&inFile);
while (!in.atEnd())
{
QString line = in.readLine();
QStringList linelist = line.split("=");
settings[linelist[0]] = linelist[1];
}
}
变体2
使用QSettings::registerFormat()
。
这可能是使用QSettings
进行此操作的唯一“干净”方法。优点是您可以使用.desktop扩展名注册它。您必须编写一对ReadFunc()
和WriteFunc()
函数。
答案 1 :(得分:2)