[size=large]按钮的类型:[/size]
[list]
[*]普通按钮
[*]开关按钮(是单选、复选的抽象原型)
[*]复选按钮
[*]单选按钮(涉及组的概念,单独出来)
[/list]
[size=large]按钮的创建:[/size]
[size=large]按钮的属性:[/size]
[size=large]按钮的事件:[/size]
[size=large]带图片、文件的按钮[/size]
[list]
[*]普通按钮
[*]开关按钮(是单选、复选的抽象原型)
[*]复选按钮
[*]单选按钮(涉及组的概念,单独出来)
[/list]
[size=large]按钮的创建:[/size]
// 普通按钮
GtkWidget *gtk_button_new();
GtkWidget *gtk_button_new_with_label(const gcahr *label);
GtkWidget *gtk_button_new_with_mnemonic(const gchar *label);
// 开关按钮 Toggle Buttons
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 );
// 复选框
GtkWidget *gtk_check_button_new( void );
GtkWidget *gtk_check_button_new_with_label ( const gchar *label );
GtkWidget *gtk_check_button_new_with_mnemonic ( const gchar *label );
[size=large]按钮的属性:[/size]
// 注意,当你使用 gtk_toggle_button_set_active() 函数,
// 并且状态也实际改变了时,它会导致按钮发出 "clicked" 和 "toggled" 信号。
void gtk_toggle_button_set_active ( GtkToggleButton *toggle_button, gboolean is_active );
gboolean gtk_toggle_button_get_active ( GtkToggleButton *toggle_button);
GSList *gtk_radio_button_get_group( GtkRadioButton *radio_button );
void gtk_toggle_button_set_active( GtkToggleButton *toggle_button, gboolean state );
[size=large]按钮的事件:[/size]
void toggle_button_callback (GtkWidget *widget, gpointer data)
{
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)))
{
/* 如果运行到这里,开关按钮是按下的 */
} else {
/* 如果运行到这里,开关按钮是弹起的 */
}
}
[size=large]带图片、文件的按钮[/size]
/* 创建一个新的横向盒,它包含一个图像和一个标签,并返回这个盒。*/
GtkWidget *xpm_label_box( gchar *xpm_filename,
gchar *label_text )
{
GtkWidget *box;
GtkWidget *label;
GtkWidget *image;
/* 为图像和标签创建盒 */
box = gtk_hbox_new (FALSE, 0);
gtk_container_set_border_width (GTK_CONTAINER (box), 2);
/* 创建一个图像 */
image = gtk_image_new_from_file (xpm_filename);
/* 为按钮创建一个标签 */
label = gtk_label_new (label_text);
/* 把图像和标签组装到盒子里 */
gtk_box_pack_start (GTK_BOX (box), image, FALSE, FALSE, 3);
gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 3);
gtk_widget_show (image);
gtk_widget_show (label);
return box;
}