分类: 嵌入式
2009-11-26 13:35:01
一、常用构件函数
最常用的构件是按钮构件、录入字段构件、列表框构件和复合框构件。所有建立按钮的函数返回指向GtkWidget的指针。GtkWidget指针能够调用对构件进行操作的通用函数。函数gtk_widget_show是通用函数的例子。
由于建立的构件是通用的构件,需要将它转换为正确的类型以适合调用更为专用的函数。如:建立按钮函数返回GtkWidget指针,但是专用的按钮子程序要求GtkButton指针。所有在调用专用的按钮函数以前,需要使用GTK_BUTTON宏将通用的GtK_Widget指针转换为GtKButton指针。
二、按钮
按钮时最简单的构件,因为它们的最常用功能是允许用户点击它们。“点击”事件是一次按下按钮和释放按钮的组合。通常点击按钮导致某些操作的完成,如保存文件或结束对话等。
按钮由容器派生而来,所有它们共享容器的许多特性。一个重要的特性是容纳其它构件的能力。按钮构件的正文实际是放在按钮构件内的标号构件。
建立按钮可以带标号或不带标号。函数gtk_button_new_with_label建立带标号的按钮。函数gtk_button_new建立不带子构件的按钮。函数返回指向GtkWidget的指针,可以使用GTK_BUTTON宏将它转换为GtkButton。
1.
名称:: |
gtk_button_new gtk_button_new_with_label |
功能: |
创建一个不带标号的按钮 (gtk_button_new) 创建一个带标号的按钮 (gtk_button_new_with_label) |
头文件: |
#include |
函数原形: |
GtkWidget *gtk_button_new(void); GtkWidget *gtk_button_new_with_label(const gchar *label); |
参数: |
label 按钮正文 |
返回值: |
新的按钮 |
按钮构件能够发送若干种信号。按钮信号有:
pressed 按下按钮
released 释放按钮
clichéd 点击按钮,这是“按下”和“释放”操作的组合
enter 鼠标移动到按钮上
leave 鼠标离开按钮
事件可以使用户的操作引起的,也可以用下面的函数模拟事件的发生。但不经常使用模拟信号发生的函数。
pressed gtk_button_pressed(button)
released gtk_button_released(button)
clichéd gtk_button_clicked(button)
enter gtk_button_enter(button)
leave gtk_button_leave(button)
下面的短信息建立带按钮的窗口。当产生信号时,在控制台上显示每一种按钮信号。
#include void button_event(GtkWidget *,gpointer *); int main(int argc,char *argv[ ]) { GtkWidget *window; GtkWidget *button; gtk_init(&argc,&argv); /*初始化*/ window=gtk_window_new(GTK_WINDOW_TOPLEVEL); /*创建窗体*/ gtk_signal_connect(GTK_OBJECT(window),"delete_event", button=gtk_button_new_with_label(“Button”); /*创建带标号的按钮*/ gtk_signal_connect(GTK_OBJECT(button),”pressed”,GTK_SIGNAL_FUNC(button_event),”pressed”); /*登记按钮pressed信号的回调函数*/ gtk_signal_connect(GTK_OBJECT(button),”released”,GTK_SIGNAL_FUNC(button_event),”released”); /*登记按钮released信号的回调函数*/ gtk_signal_connect(GTK_OBJECT(button),”clicked”,GTK_SIGNAL_FUNC(button_event),”clicked”); /*登记按钮clicked信号的回调函数*/ gtk_signal_connect(GTK_OBJECT(button),”enter”,GTK_SIGNAL_FUNC(button_event),”enter”); /*登记按钮enter信号的回调函数*/ gtk_signal_connect(GTK_OBJECT(button),”leave”,GTK_SIGNAL_FUNC(button_event),”leave”); /*登记按钮leave信号的回调函数*/ gtk_container_add(GTK_CONTAINER(window),button); /*把按钮加入窗体*/ gtk_widget_show(button); /*显示按钮*/ gtk_widget_show(window); /*显示窗体*/ gtk_main(); return 0; } void button_event(GtkWidget *widget,gpointer *data) /*回调函数*/ { g_print(“Button event:%s\n”,data); } |
我们编译上面的程序:
$gcc –o button1 button1.c `pkg-config –cflags –libs gtk+-2.0
$./button1
下面是显示页面:
当用户点击Button然后移开,终端会显示如下信息:
Button event: enter
Button event: pressed
Button event: clicked
Button event: released
Button event: leave
当然这只是一个演示,在实际应用中也许你需要通过点击一个按钮来调用一个段具有一定功能的函数。