我正在 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/