【发布时间】:2016-10-28 11:36:22
【问题描述】:
我在 Windows7 上使用 Qt5.7。
在我当前的应用程序中,我有自己的设置管理器类,如下所示:
标题:
class SettingsManager
{
public:
void write(const QString & key, const QVariant & variant);
QVariant read (const QString & key) const;
private:
static QSettings settings;
};
来源 cpp:
QSettings SettingsManager::settings("settings.ini", QSettings::IniFormat);
void SettingsManager::write(const QString & key, const QVariant & variant)
{
settings.setValue(key, variant);
}
QVariant SettingsManager::read(const QString & key) const
{
return settings.value(key);
}
我的问题是:我把应用程序给了一些朋友,可能他们用不同的工作目录或其他东西启动了它,应用程序没有找到 settings.ini 文件,因此它没有正常工作。 .
所以,问题是:如何修改上面的代码,以便能够从应用程序/可执行目录中获取settings.ini 文件?显然,settings.ini 文件始终与应用程序本身位于同一文件夹中。
【问题讨论】:
-
您似乎没有使用绝对路径。
-
我尝试了类似
( QCoreApplication::applicationDirPath() + "/settings.ini" )的方法,但没有成功。它说的是:请先实例化 QApplication 对象... -
你应该有一个
QApplication或QCoreApplication在你的主要地方。在调用静态函数之前,您必须先创建对象。无论如何,您都必须创建一个,所以这没什么大不了的。 -
main中有一个对象... -
您正试图在
main开始运行之前使用设置系统。那是因为您在某处使用设置来初始化全局变量:保证在输入main之前初始化这些设置。所以不要那样做,你会没事的。
标签: c++ qt configuration application-settings qsettings