GTK TextView - 创建静态显示格式

时间:2012-05-07 20:29:04

标签: c++ user-interface gtk gtkmm gtktextview

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

要做到这一点,我想使用TextView。我的显示有10行,有25列。所以我认为TextView应该很容易。

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

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

但是这会开始在行中附加文本,而不是替换现有文本。

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

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

有人能给我一个快速的例子说明我该如何做到这一点?不幸的是,没有关于此类事情的大量文档。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

如果您的目标是GTK + 3.x,那么您应该考虑使用Cairo。由于您实际上并不需要文本缓冲区,因此使用GtkTextView似乎有些过度和错误对齐。

查看关于如何draw with Cairo in GTK+的基本介绍。然后查看text-rendering Cairo APIs,这应该足以让您入门。