首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GSettings、glib编译模式和Eclipse

GSettings、glib编译模式和Eclipse
EN

Stack Overflow用户
提问于 2020-05-22 11:53:22
回答 1查看 555关注 0票数 0

我正在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支持,我会觉得自己很幸运,并且可以分享细节。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-01 04:13:22

我终于明白了。我想在这里分享我的发现。实际上,有一个人解释了python (下面的链接)。

在Python/PyGObject中使用GSettings

创建架构

对于开发人员来说,工作从为设置定义架构开始。模式是类似于以下内容的XML文件。

代码语言:javascript
复制
<?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文件。

gschema.dtd

可以将从GVariant派生的任何内容存储到GSettings中。请参阅下一页,以了解架构中使用的基本类型和“type”属性。

GVariant格式字符串

编译模式

模式就绪后,(sudo)将其复制到/usr/share/glib-2.0/ schema /中,然后运行,

代码语言:javascript
复制
> sudo glib-compile-schemas /usr/share/glib-2.0/schemas/

此时,可以使用dconf编辑器查看/修改新添加的设置。

从应用程序访问GSettings

接下来是演示的主要事件,这就是应用程序如何读取(和/或写入)设置。不必将对象的属性绑定到GSettings中的“键”,也可以查询和使用。有关详细信息,请参阅GSettings API参考。

代码语言:javascript
复制
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()处理程序中执行一次绑定。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61954429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档