我目前正在学习GTKTextTags以及GtkTextViewGtkTextBuffer的应用程序。我确实注意到了this question,但并不想将数据导出到RTF文件中,我认为这是该问题的主要目的

我有一个将GtkTextBuffer的内容存储到TEXT数据库的SQLITE3字段中的应用程序。阅读GtkTextWidget概述和GtkTextTag上的文档后,我(错误地)理解了标记系统的工作方式很像标记语言,例如XML / HTML。

当我在将&start设置为&end的情况下调用GtkTextIters时,给我留下了深刻的印象(设置了gtk_text_buffer_get_text (...)gboolean include_hidden_chars TRUE之后),我实际上会得到一个也包含gchar*GtkTextTags。因此该字符串可能看起来像<b>some text</b>(但显然使用GtkTextTag格式器而不是HTML)。我意识到现在并非如此。

问题:我将从gchar*获得的gtk_text_buffer_get_text(...)存储到数据库TEXT字段中。稍后,或者当我重新打开应用程序时,我想将此数据重新加载到GtkTextBuffer中,并通过从数据库中检索相关的TEXT字段数据并使用gtk_text_buffer_set_text (...)设置文本来做到这一点。在这一点上,我发现所有的格式化标签都消失了,格式化变得毫无意义。我想要做的是将文本从GtkTextBuffer存储到数据库的TEXT字段中,并在重新加载格式时保留格式。

问:是否可以将GtkTextBuffer中的文本和标签存储到SQLITE3数据库中,以便在将此文本重新加载为GtkTextBuffer格式时保留?

我曾考虑过在数据库中使用BLOB字段而不是TEXT字段,但不确定是否有更好的方法来实现自己的目标。

最佳答案

我建议先使用gtk_text_buffer_register_serialize_tagset(),然后使用gtk_text_buffer_serialize()来获取字节数组(guint8[]),然后再使用gtk_text_buffer_deserialize()将其读回另一个文本缓冲区。

我认为您将必须使用BLOB字段而不是TEXT,因为gtk_text_buffer_serialize()的返回值是字节数组而不是字符串。

关于sqlite - C-带有gchar标签的GtkTextBuffer文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32006961/

10-11 03:23