gtkmm 从资源纯文本文件加载
gtkmm load from resource plain text file
我有一个简单的资源xml文件看起来像
<?xml version="1.0" encoding="UTF-8" ?>
<gresources>
<gresource prefix="ui">
<file preprocess="xml-stripblanks">ui.glade</file>
</gresource>
<gresource prefix="text-data">
<file>definitions.txt</file>
</gresource>
</gresources>
并且UI加载没有问题
refBuilder->add_from_resource("/ui/ui.glade");
但我不知道如何加载和读取资源文件中定义为“definition.txt”的文本文件。
您可以使用 Gio::Resource class 的两个静态方法之一检索文件内容:open_stream_global or lookup_data_global。这是他们的签名:
Glib::RefPtr< InputStream > open_stream_global (const std::string& path, ResourceLookupFlags lookup_flags=RESOURCE_LOOKUP_FLAGS_NONE)
Glib::RefPtr< const Glib::Bytes > lookup_data_global (const std::string& path, ResourceLookupFlags lookup_flags=RESOURCE_LOOKUP_FLAGS_NONE)
如您所见,它们之间的区别在于访问数据的方式:通过 Gio stream class or Glib::Bytes(“数据数组”:字节内容 + 长度)。
我有一个简单的资源xml文件看起来像
<?xml version="1.0" encoding="UTF-8" ?>
<gresources>
<gresource prefix="ui">
<file preprocess="xml-stripblanks">ui.glade</file>
</gresource>
<gresource prefix="text-data">
<file>definitions.txt</file>
</gresource>
</gresources>
并且UI加载没有问题
refBuilder->add_from_resource("/ui/ui.glade");
但我不知道如何加载和读取资源文件中定义为“definition.txt”的文本文件。
您可以使用 Gio::Resource class 的两个静态方法之一检索文件内容:open_stream_global or lookup_data_global。这是他们的签名:
Glib::RefPtr< InputStream > open_stream_global (const std::string& path, ResourceLookupFlags lookup_flags=RESOURCE_LOOKUP_FLAGS_NONE)
Glib::RefPtr< const Glib::Bytes > lookup_data_global (const std::string& path, ResourceLookupFlags lookup_flags=RESOURCE_LOOKUP_FLAGS_NONE)
如您所见,它们之间的区别在于访问数据的方式:通过 Gio stream class or Glib::Bytes(“数据数组”:字节内容 + 长度)。