Tag: model view controller

编辑GtkTreeView的难度

我正在编写一个软件,我的用户应该能够将数据添加到类似于表格的编辑小部件,我设法通过使用GtkTreeView进行渲染。 我可以通过此调用设置其editable属性来呈现我的单元格 g_object_set(content_renderer, “editable”, TRUE, NULL); 但是,我的GtkTreeView不仅保留输入的值,因为它甚至没有显示我在渲染之前添加的数据。 我在Web上看到了一些示例,开发人员手动将用户输入数据设置为模型,但所有这些都是使用Python或C ++编写的,使用这些语言提供的绑定,因此不直接解决我的问题。 我写了这个(不是那么)小例子 ,成功地显示了问题。 如何在GtkTreeView中使用户输入数据持久存在? PS:我的问题在某种程度上与这个有关,但是这个解决方案并不适用于我。 编辑 :我跟着@PhillipWood提示并将我的GtkCellRendererText连接到edited信号,并手动将新数据设置到模型中。 但是,我在编辑之前输入的数据和我在编辑期间输入的数据都没有显示在网格中。 我在Fedora 19下,GTK + 3.8.8。

实时查看循环缓冲区中的数据

我有一个传入的消息流,并想要一个允许用户滚动消息的窗口。 这是我目前的想法: 传入消息进入单个生产者单个消费者队列 线程将它们读出并将它们放入具有顺序id的循环缓冲区中 通过这种方式,我可以将多个传入流安全地放置在循环缓冲区中,并将输入解耦 Mutex用于协调UI和线程之间的循环缓冲区访问 从线程到UI的两个通知,一个用于第一个id,另一个用于缓冲区中的最后一个id。 这允许UI确定它可以显示什么,它需要访问的循环缓冲区的哪些部分,删除被覆盖的消息。 它只访问以当前大小和滚动位置填充窗口所需的消息。 我对用户界面中的通知感到不满意。 它将以高频率生成。 这些可能会排队或以其他方式受到限制; 延迟不应该影响第一个id,但处理最后一个id的延迟可能会导致角落情况出现问题,例如查看完整缓冲区的末尾, 除非 UI复制了它显示的消息,我想避免这种情况。 这听起来像是正确的做法吗? 任何调整都可以让它变得更加美味?