双态按钮由一般按钮衍生而来,并且非常相似,只是双态按钮有两个状态,通过点击可以切换。它们可以是被按下的(depressed),当你再点击一下,他们会弹起来。再点击一下,它们又会再弹下去。
双态按钮是复选按钮和单选按钮的基础,所以单选按钮和复选按钮继承了许多双态按钮的函式呼叫。我会在讲到它们时指出这些来。
创建一个新的双态按钮:
GtkWidget *gtk_toggle_button_new( void ); GtkWidget *gtk_toggle_button_new_with_label( const gchar *label ); GtkWidget *gtk_toggle_button_new_with_mnemonic( const gchar *label ); |
你可以猜到,创建双态按钮应该和一般按钮元件相同。第一个函式是创建一个空白的双态按钮,后面两个函式创建带标签的双态按钮。其中 _mnemonic() 函式是跟其前面有_lable的函式的变形。
我们是通过读取双态元件 (包括单选和复选按钮) 结构的 active 域,来检测双态按钮的状态。之前要用 GTK_TOGGLE_BUTTON 巨集把元件指标转换为双态元件指标。我们关心的各种双态按钮 (双态按钮,复选按钮,和单选按钮元件) 的信号是 “toggled” 信号。为了检测这些按钮的状态,设置一个处理函式以捕获 “toggled” 信号,并且通过读取结构测定它的状态。该回呼函式如下:
void toggle_button_callback (GtkWidget *widget, gpointer data)
{
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)))
{
/* 如果执行到这里,双态按钮是按下的 */
} else {
/* 如果执行到这里,双态按钮是弹起的 */
}
}
|
设置双态按钮和它的子类别 (即单选和复选按钮) 的状态,用如下函式:
void gtk_toggle_button_set_active( GtkToggleButton *toggle_button,
gboolean is_active );
|
上面的呼叫可以用来设置开关按钮,以及它的子类别单选和复选按钮的状态。将你所创建的按钮作为第一个参数传入,以及一个 TRUE 或 FALSE 值作为第二个状态参数来指定它应该是下 (按下) 还是上 (弹起)。预设是上,即 FALSE。
注意,当你使用 gtk_toggle_button_set_active() 函式,并且状态也实际改变了时,它会导致按钮发出 “clicked” 和 “toggled” 信号。
gboolean gtk_toggle_button_get_active (GtkToggleButton *toggle_button); |
传回值是双态按钮的当前状态。
1 則留言
Comments are closed.