GTK+图形化应用程序开发学习笔记(六)—按钮(1)

 

一、常用构件函数

       最常用的构件是按钮构件、录入字段构件、列表框构件和复合框构件。所有建立按钮的函数返回指向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 <gtk/gtk.h>

函数原形

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 <gtk/gtk.h>

 

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”,G_CALLBACK(gtk_main_quit),NULL); /*登记窗体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

 

当然这只是一个演示,在实际应用中也许你需要通过点击一个按钮来调用一个段具有一定功能的函数。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值