c - 尝试同步 GTK 条目时无限循环

标签 c gtk

我正在 GTK 中编写一个“转换器”程序,其中我有 2 个 gtk_entry 并且(理想情况下)编辑一个会改变另一个。

但是,我发现自己处于一个无限循环中——改变一个会改变另一个,另一个会改变另一个,另一个会改变另一个...

我猜那是因为我正在使用 changed 信号,当我真的需要某种“用户编辑此字段”信号而不是“计算机编辑-这个领域”。

我的代码目前看起来像这样:

year= gtk_entry_new ();
g_signal_connect (G_OBJECT (year), "changed",
                  G_CALLBACK (Update), (gpointer) "one");

(我尝试使用“一”和“二”来表示“朝这个方向转换”与“朝那个方向转换”,但没有帮助。)

我的“更新”功能以

结尾
gtk_entry_set_text( GTK_ENTRY (day), s);

是否有一个我应该使用的信号指定“当用户更改此字段中的文本时执行此操作,而不是当计算机更改此字段中的文本时执行此操作”?

我知道我可以创建一对“激活”按钮,一个用于每个方向,但我正在努力做到时髦和自动更新。

最佳答案

您要求的信号不存在,但这应该有效:

g_signal_handlers_block_by_func (day, day_changed_cb, userdata_of_day_change_cb);
gtk_entry_set_text (GTK_ENTRY (day), s);
g_signal_handlers_unblock_by_func (day, day_changed_cb, userdata_of_day_change_cb);

关于c - 尝试同步 GTK 条目时无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25272848/

相关文章:

c - 程序分析(递归)

java - 相当于Java中的memcmp()?

c++ - 如何编译flex代码以获得动态库?

c - 如何从 gtk+3 builder 获取解析错误?

python - 为 PyGtk 应用授予 root 权限

python - gtk+2、gtk+3 和 pygobject3 全部安装到 mac 后为 "No module named pygtk found"

c - c 中的内存是如何分配的,为什么两个连续的内存之间的差异总是4?

在控制进入共享库之前捕获系统调用

c - 检测 Control 键何时被释放

c - GTK 页面内容小部件