2

我正在尝试模拟一个硬件,这个硬件有一个静态的功能区显示。

为此,我想使用 TextView。我的显示器有 10 行,25 列。所以我认为 TextView 应该很容易。

基本上,我想说“在 X 行插入/替换字符串 S,从 Y 列开始”。我可能只需要更新特定的行,甚至是一行中的一列。

不过,我还没有成功地让它发挥作用。我能做的最好的事情是在创建 TextView 时用 10 行 25 个空格填充它,然后使用get_iter_at_line_offset获取一行的迭代器,然后将新文本推送到该行上。

但这将开始将文本附加到该行,而不是替换现有的。

我需要行和列控制(即需要能够在特定(X,Y)坐标处设置文本)。

我假设这在某种程度上可以使用标记。

谁能给我一个简单的例子来说明我如何做到这一点?不幸的是,关于这类事情的文档并不多。

4

2 回答 2

1

您必须在特定的行 X 行获取一个迭代器,然后使用迭代器的forward_chars()方法向前移动 Y 个字符。然后删除你要替换的字符数,最后插入你要插入的文字。我认为,您可以使用迭代器来完成这一切 - 当您更改缓冲区时,迭代器会失效,但是当您删除文本时,您的迭代器之一会重新验证以指向文本所在的位置。

于 2012-05-08T06:30:25.410 回答
0

如果您的目标是 GTK+ 3.x,您应该真正考虑使用 Cairo。由于您实际上并不需要文本缓冲区,因此使用 GtkTextView 似乎有点矫枉过正并且有点错位。

查看关于如何在 GTK+ 中使用 Cairo 绘图的非常基本的介绍。然后看看文本渲染 Cairo APIs,这应该足以让您入门。

于 2012-05-08T07:54:14.960 回答