我想设置GtkToggleButton的状态,而不会导致它发出任何信号。这可能吗?
这会导致信号被发出,正如我所期望的那样(C代码):
GtkToggleButton* but;
gboolean state = get_some_data();
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(but), state);
我也试过这个,效果相同:
g_object_set(but,"active", state, NULL);
有什么想法? (我对GTK完全不熟悉,如果这是一个愚蠢的问题,请原谅我。)谢谢!
我(姗姗来迟)发现了信号阻断机制:
g_signal_handlers_block_by_func( but, G_CALLBACK(my_callback), NULL);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(but), c);
g_signal_handlers_unblock_by_func( but, G_CALLBACK(my_callback), NULL);
这是否合适?