我是 xnec2c 的维护者,我们发现此代码导致 xnec2c 在调整窗口大小或旋转对象时通过 PC 扬声器发出蜂鸣声(过度且烦人):
snprintf( txt, sizeof(txt), "%7.2f", Viewer_Gain(proj_params, calc_data.freq_step) );
gtk_entry_set_text( GTK_ENTRY(Builder_Get_Object(builder, widget)), txt );
为什么
gtk_entry_set_text
会发出蜂鸣声?
经过大量故障排除后,
"%7.2f"
创建的文本对于widget
定义的文本字段来说太长(注意,widget
是命名小部件的gchar[]
字符串,而不是小部件对象)。
文本字段的
max-length
是由 Glade XML 定义的,因此每次更新小部件文本时 gtk_entry_set_text
都会触发蜂鸣事件。
如果它对其他人有帮助,这就是解决方法:
- snprintf( txt, sizeof(txt), "%7.2f", Viewer_Gain(proj_params, calc_data.freq_step) );
+ snprintf( txt, sizeof(txt)-1, "%.2f", Viewer_Gain(proj_params, calc_data.freq_step) );
gtk_entry_set_text( GTK_ENTRY(Builder_Get_Object(builder, widget)), txt );
...
- <property name="max-length">6</property>
+ <property name="max-length">9</property>
并且这是解决我们问题的提交(如果您想查看整个事情)。