在 .Net 中,您通常有一个 app.config 文件并内置了访问配置的方法。
是否有使用 Qt 进行配置的等效标准方法?
例如,假设我的应用程序连接到在线服务器,我希望能够存储连接详细信息(用户定义)。
这是“自己动手”的情况,还是有办法使用 XML 或 Qt 提供的任何其他具有简单读/写方法的格式来存储和读取这些配置?
编辑:为问题添加一些复杂性。这是一个 Linux 控制台应用程序,因此请专门寻找基于文件和透明的配置。
你可以用QSettings
这个。有关详细信息,请参阅文档:
http://qt-project.org/doc/qt-5.1/qtcore/qsettings.html
您始终可以使用其他格式,如 XML、Json 等,但一般来说,QSettings 是一种方式,或者如果您正在编写 KDE 应用程序,那么可能是KConfig
.
这是在处理 QSettings 进行读写时需要注意的两个重要方法:
QVariant QSettings::value(const QString & key,
const QVariant & defaultValue = QVariant()) const
void QSettings::setValue(const QString & key, const QVariant & value)
然后,您可以简单地坚持本机格式(如果您愿意,甚至可以在您的 Linux 上使用 ini):
QSettings::NativeFormat 0 使用最适合平台的存储格式存储设置。在 Windows 上,这意味着系统注册表;在 Mac OS X 上,这意味着 CFPreferences API;在 Unix 上,这意味着 INI 格式的文本配置文件。
为方便起见,您可以在这里找到一个示例:
#include <QSettings>
int main()
{
....
QSettings settings("Foo", "Bar");
// settings.beginGroup("application");
QString string = settings.value("foo", "bar");
// settings.endGroup();
....
}
请注意,这些组是可选的,这取决于您的确切目的。您可以通过这种方式对设置进行分组,以将某些设置封装起来。
根据文档,这对于您了解也很重要:
在 Unix 系统上,如果文件格式为 NativeFormat,则默认使用以下文件:
$HOME/.config/MySoft/Star Runner.conf(用于嵌入式 Linux 的 Qt:$HOME/Settings/MySoft/Star Runner.conf)
$HOME/.config/MySoft.conf(用于嵌入式 Linux 的 Qt:$HOME/Settings/MySoft.conf)
/etc/xdg/MySoft/Star Runner.conf
/etc/xdg/MySoft.conf