C++ GTK TextView-创建静态显示格式
我试图模拟一个硬件,这个硬件有一个静态的带状显示 为此,我想使用TextView。我的显示器有10行,25列。所以我认为文本视图应该足够简单 基本上,我希望能够说“在第X行插入/替换字符串S,从第Y列开始”。我可能只需要更新一行,甚至一行中的一列 不过,我并没有成功地让它发挥作用。我所能做的最好的事情就是在创建文本视图时,用10行25个空格填充文本视图,然后使用C++ GTK TextView-创建静态显示格式,c++,user-interface,gtk,gtkmm,gtktextview,C++,User Interface,Gtk,Gtkmm,Gtktextview,我试图模拟一个硬件,这个硬件有一个静态的带状显示 为此,我想使用TextView。我的显示器有10行,25列。所以我认为文本视图应该足够简单 基本上,我希望能够说“在第X行插入/替换字符串S,从第Y列开始”。我可能只需要更新一行,甚至一行中的一列 不过,我并没有成功地让它发挥作用。我所能做的最好的事情就是在创建文本视图时,用10行25个空格填充文本视图,然后使用get_iter_at_line_offset获取一行的迭代器,然后将新文本推到该行上 但这将开始在行中添加文本,而不是替换现有的文本
get_iter_at_line_offset
获取一行的迭代器,然后将新文本推到该行上
但这将开始在行中添加文本,而不是替换现有的文本
我需要行和列控件(即需要能够在特定(X,Y)坐标处设置文本)
我想这是可能的使用标记
有谁能给我一个简单的例子,说明我是如何做到这一点的?不幸的是,关于这类事情的文档并不多。您必须在特定行X行获得一个iter,然后使用迭代器的
forward\u chars()
方法向前移动Y个字符。然后删除要替换的字符数,最后插入要插入的文本。我认为,您可以使用迭代器来完成这一切——当您更改缓冲区时,迭代器将失效,但当您删除文本时,其中一个迭代器将重新验证,以指向文本所在的位置。如果您的目标是GTK+3.x,您应该真正考虑使用Cairo。因为您实际上不需要文本缓冲区,所以使用GtkTextView似乎有些过分,而且有点不对齐
请看关于如何使用的最基本的介绍。然后看看,这应该足够让您开始了。我不知道静态功能区显示是什么,但根据您的描述,我认为基于Gtk::DrawingArea的方法相对简单,可以控制结果的外观。简单地在内存中维护GUI会不会太糟糕,然后使用set_text在需要更改时对整个缓冲区执行基本擦除和刷新?基本上在长字符数组上执行我的所有操作(每25个索引处都有换行符),然后通过set_text?推送,这取决于需要更新显示的频率。也许最好只是尝试一下,然后再优化它,如果它太慢?内存不会有问题,现在大多数计算机至少有250字节的内存。每秒更新一次。我想我会走这条路。我喜欢使用cairo-like-unwind-post的想法,但是我有一个beta测试的截止日期,所以我现在就这样做,等我有时间进行第2阶段时再进行优化。为什么只使用GTK+3.x。而不是GTK+2?我知道这里和那里都有很多变化,但是性能有改进吗?因为根据我的经验,开罗对于这样的事情来说是可怕的。