[修订]
我正在尝试使用GT中的GTK3 TextView。我知道如何将标记(例如斜体等)应用于文本区域。
但是如何在缓冲区中键入“打开”样式(斜体,粗体等)?例如,假设我正在键入文本,并且没有设置样式。然后我想输入斜体。我想将斜体标签应用于插入点,之后我输入的任何内容都将以斜体显示。
我注意到当您将插入光标放在任何现有样式文本的右侧时,前一个字符的标记将被继承,但前提是该样式在插入点之前和之后有效。有趣的是,尾随换行符可以被样式化,因此当插入点位于一行的末尾并且最后一个可见字符具有样式时,则继承该样式。
我查看了一些使用按键信号的方法,然后将文本标签应用到刚刚输入的未标记字符的区域,但这很慢并且在屏幕上看起来很奇怪 - 显示纯字符和然后用标记的字符替换。
我也试过了:
gtk_text_buffer_insert_markup(buf, &iter, "<i>", -1);
但会收到警告:Invalid markup string: ... Element 'markup' was closed, but the currently open element is 'i'
并且对显示的文字没有影响。使用<i></i>
不会收到警告但也没有效果。我终于求助于:
gtk_text_buffer_insert_markup(buf, &iter, "<i> </i>", -1); // 2 spaces
gtk_text_iter_backward_char (&iter);
gtk_text_buffer_place_cursor(buf, &iter);
让我开始在两个新空格之间输入斜体 - 这并不是那么糟糕。
但是点击“我”按钮开始用斜体键入 - 这是一个已经存在了几十年的基本编辑功能。在某种程度上GTK必须是可能的吗?
有什么想法吗?
感谢