Чтение настроек из программы на C++

Мне нужно программно получить значение масштабного коэффициента интерфейса com.ubuntu.user из gsettings в моей программе на C++. Есть ли какой-нибудь элегантный способ сделать это, вместо того, чтобы вызывать gsettings двоичный файл и анализировать его вывод?

2 ответа

Решение

В glibmm есть привязка C++ к gsettings. С его помощью чтение значения из схемы может быть сделано, как показано ниже. Обратите внимание, что у меня нет системы Ubuntu, чтобы проверить это, поэтому подробности основаны на кратком взгляде на документацию, в которой говорилось scale-factor является интегральным значением. Имея это в виду:

#include <giomm/settings.h>
#include <iostream>

int main() {
  Glib::RefPtr<Gio::Settings> s = Gio::Settings::create("com.ubuntu.user-interface");
  int i = s->get_int("scale-factor");

  std::cout << i << std::endl;
}

Смотрите также здесь.

Я не могу оставить комментарий к ответу Wintermute из-за низкой репутации, поэтому я публикую его здесь.

Newbe, как и я, может иметь проблемы в том числе <giomm/settings.h> (не найден): решение - добавить команду компиляции gcc `pkg-config --cflags --libs glibmm-2.4 giomm-2.4` (с кавычками)

Если ваш исходный файл program.ccВы можете скомпилировать это с:

g++ program.cc -o program `pkg-config --cflags --libs glibmm-2.4 giomm-2.4`

Отсюда

Другие вопросы по тегам