“调整对象”的内部机制
struct _GtkAdjustment |
如果你不喜欢像一个 real C程序员那样直接从结构中取值,你可以使用下面的函数来获取调整对象的value 参数值:
gdouble gtk_adjustment_get_value( GtkAdjustment *adjustment); |
因为设置调整对象的值时,通常想让每个使用这个调整对象的构件对值的改变做出响应,GTK 提供了下面的函数:
void gtk_adjustment_set_value( GtkAdjustment *adjustment, |
void (* value_changed) (GtkAdjustment *adjustment); |
void cb_rotate_picture (GtkAdjustment *adj, GtkWidget *picture) |
g_signal_connect (G_OBJECT (adj), "value_changed", |
当构件重新配置了它的调整对象的upper 或lower 参数时(比如,用户向文本构件添加了更多的文本时),发生了什么?在这种情况下,它会引发一个changed 信号:
void (* changed) (GtkAdjustment *adjustment); |
范围构件一般为这个信号设置回调函数,构件会改变它们的外观以反映变化。例如,滚动条上的滑块会根据它的调整对象的lower 和upper 参数之间的差值的变化而伸长或缩短。
一般不需要处理这个信号,除非你想要写一个新的范围构件。不过,如果直接改变了调整对象的任何参数,应该引发这个信号,以便相关构件重新配置自己。用下面的函数引发这个信号:
g_signal_emit_by_name (G_OBJECT (adjustment), "changed"); |
<<< Previous | Home | Next >>> |
轻松使用调整对象 | Up | 范围构件 Range Widgets |