在 C++ 中编辑 gsettings
Edit gsettings in a C++
我正在尝试通过 C++ 程序编辑 gsetting。
我读过这个 并且我能够得到它的价值。如果我尝试设置它(使用 set_uint
方法),似乎进行了更改(如果我重新阅读它会显示新值)但是,如果我手动检查,则事实并非如此。我必须应用编辑吗?或者还有什么?
示例代码:
#include <giomm/settings.h>
#include <iostream>
int main() {
Glib::RefPtr<Gio::Settings> colorSetting =
Gio::Settings::create("org.gnome.settings-daemon.plugins.color");
Glib::ustring tempKey = "night-light-temperature";
//Works!
cout<<colorSetting->get_uint(tempKey)<<endl;
//Seems to work
colorSetting->set_uint(tempKey, (unsigned) 2300);
//Reads new value correctly
cout<<colorSetting->get_uint(tempKey)<<endl;
return 0;
}
提前致谢。
由于您的程序在设置该值后几乎立即退出,很可能 GSettings
中的异步写入机制在您的程序退出时尚未将新值写入磁盘。
尝试在退出前添加一个 g_settings_sync()
调用(我不知道它在 giomm
中是如何绑定的,但这就是 C 中的调用)。来自 the documentation for g_settings_sync()
:
Writes made to a GSettings
are handled asynchronously. For this reason, it is very unlikely that the changes have it to disk by the time g_settings_set()
returns.
需要说明的是,通常不需要 g_settings_sync()
调用;只有在这里才有必要,因为你不是 运行 主循环。
另请参阅:G_Settings apply changes and Can't change dconf-entry with GSettings,其中涵盖了相同的问题,但从 C 和 JavaScript 的角度出发。
我正在尝试通过 C++ 程序编辑 gsetting。
我读过这个 set_uint
方法),似乎进行了更改(如果我重新阅读它会显示新值)但是,如果我手动检查,则事实并非如此。我必须应用编辑吗?或者还有什么?
示例代码:
#include <giomm/settings.h>
#include <iostream>
int main() {
Glib::RefPtr<Gio::Settings> colorSetting =
Gio::Settings::create("org.gnome.settings-daemon.plugins.color");
Glib::ustring tempKey = "night-light-temperature";
//Works!
cout<<colorSetting->get_uint(tempKey)<<endl;
//Seems to work
colorSetting->set_uint(tempKey, (unsigned) 2300);
//Reads new value correctly
cout<<colorSetting->get_uint(tempKey)<<endl;
return 0;
}
提前致谢。
由于您的程序在设置该值后几乎立即退出,很可能 GSettings
中的异步写入机制在您的程序退出时尚未将新值写入磁盘。
尝试在退出前添加一个 g_settings_sync()
调用(我不知道它在 giomm
中是如何绑定的,但这就是 C 中的调用)。来自 the documentation for g_settings_sync()
:
Writes made to a
GSettings
are handled asynchronously. For this reason, it is very unlikely that the changes have it to disk by the timeg_settings_set()
returns.
需要说明的是,通常不需要 g_settings_sync()
调用;只有在这里才有必要,因为你不是 运行 主循环。
另请参阅:G_Settings apply changes and Can't change dconf-entry with GSettings,其中涵盖了相同的问题,但从 C 和 JavaScript 的角度出发。