我正在写一个"转换器" GTK中的程序,我有2 gtk_entry
s和(理想情况下)编辑一个会改变另一个。
然而,我发现自己处于一个无限循环中 - 改变另一个改变另一个改变另一个改变另一个改变另一个循环......
我猜这是因为我正在使用changed
信号,当我真的需要某种"用户编辑的这个字段"信号而不是"计算机编辑的这个字段"。
我的代码目前看起来像这样:
year= gtk_entry_new ();
g_signal_connect (G_OBJECT (year), "changed",
G_CALLBACK (Update), (gpointer) "one");
(我尝试使用"一个"和#34;两个"表示"转换到这个方向" vs"转换到那个方向"但是它没有帮助。)
和我的"更新"功能以
结尾gtk_entry_set_text( GTK_ENTRY (day), s);
是否有我应该使用的信号指定"当用户更改此字段中的文本时采取此操作,但是当计算机更改此字段中的文本时#34; ?
我知道我可以制作一对"激活"按钮,每个方向一个,但我试图时髦和自动更新。
答案 0 :(得分:1)
您要求的信号不存在,但这应该有效:
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);
答案 1 :(得分:0)
我很感谢所有的建议。我将更加符合我的技能,朝着不同的方向前进。感谢。
因为我只是简单地看到问题就让我很烦恼。没关系,我明白了这个问题" ...
我创建了一对单选按钮,根据选择的按钮,我从另一组字段更新一组字段。为了使它更加明显,我决定设置一组"条目"和一组"标签。"当我更新A面时,我隐藏了B面条目并显示了B面标签。当我更新B面时,我隐藏了A面条目并显示了A面标签,并隐藏了B面标签并显示了B面条目。
我希望我知道如何关闭"我自己的问题。