我正在Ubuntu中构建这个Gtkmm3应用程序,并希望探索GSettings。在执行“使用GSettings”页面的说明时,一切都进行得很顺利,然后是时候配置make文件了。我使用Eclipse2019-12 IDE和CDT (V9.10)和作为构建器。对于如何将GNOME页面中列出的宏引入make文件,我完全感到困惑。我甚至尝试使用Eclipse将项目更改为'C/C++ Autotools项目‘,但仍然缺少添加宏所需的make文件。用创建一个新项目确实会创建必要的make文件,但我无法让pkg使用它。
有人能告诉我一些资源吗?这些资源解释了如何编译模式以及如何&在哪里加载生成的二进制文件(如果有必要的话,可以从外部加载)。如果有人已经在Linux中使用Eclipse开发了Gtkmm3 C++应用程序并提供了GSettings支持,我会觉得自己很幸运,并且可以分享细节。
发布于 2021-02-01 04:13:22
我终于明白了。我想在这里分享我的发现。实际上,有一个人解释了python (下面的链接)。
创建架构
对于开发人员来说,工作从为设置定义架构开始。模式是类似于以下内容的XML文件。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE schemalist SYSTEM "gio_gschema.dtd" >
<schemalist>
<schema id="org.gtk.skanray.emlibrary"
path="/org/skanray/emlibrary/" gettext-domain="emlibrary">
<key name="wave-pressure-ptrach-visible" type="b">
<default>true</default>
<summary>Set visibility of 'Ptrach' trace in pressure waveform.</summary>
<description>The pressure waveform shows multiple traces where 'PAW' is always enabled and additionally 'Ptrach' can be displayed. This settings affects the visibility of the trachial pressure trace shown in this waveform channel.</description></key>
</schema>
</schemalist>文件名必须有‘.gschema.xml’后缀。架构文件应该在项目路径中,只有这样它才会被推送到SVN中。最好是使用支持从DTD文件设计XML文件的XML编辑器(例如Eclipse)。使用以下DTD文件。
可以将从GVariant派生的任何内容存储到GSettings中。请参阅下一页,以了解架构中使用的基本类型和“type”属性。
编译模式
模式就绪后,(sudo)将其复制到/usr/share/glib-2.0/ schema /中,然后运行,
> sudo glib-compile-schemas /usr/share/glib-2.0/schemas/此时,可以使用dconf编辑器查看/修改新添加的设置。
从应用程序访问GSettings
接下来是演示的主要事件,这就是应用程序如何读取(和/或写入)设置。不必将对象的属性绑定到GSettings中的“键”,也可以查询和使用。有关详细信息,请参阅GSettings API参考。
Glib::RefPtr <Gio::Settings> refSettings = Gio::Settings::create(“org.gtk.skanray.emlibrary”);
CLineTrace * pTrace = NULL; // CLineTrace is derived from Gtk::Widget
…
pTrace = …
…
if(refSettings)
{
refSettings->bind("wave-pressure-ptrach-visible",
pTrace,
"visible",
Gio::SETTINGS_BIND_DEFAULT);
}现在您可以启动dconf编辑器并测试设置。
备注
通常倾向于在类构造函数中进行绑定。然而,绑定到小部件的“可视”属性可能有点棘手。通常,顶层窗口将show_all()作为其构造函数中的最后一行。但是,顶层窗口的子窗口的构造函数将已经完成执行,包括进行绑定。如果存在将“可见性”存储为false的设置,则顶层窗口对show_all()的调用将与该设置混淆。在这种情况下,建议在相应类的on_map()处理程序中执行一次绑定。
https://stackoverflow.com/questions/61954429
复制相似问题