文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>GTK+图形化应用程序开发学习笔记(六)—按钮(2)

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

时间:2007-05-24  来源:湖光倒影

二、触发按钮

       触发按钮(toggle button,GtkToggleButton)是GtkButton派生而来。它的外观类似GtkButton,但运行方式稍有不同。触发按钮与一种状态结合在一起。它可以按下和弹回。触发按钮的外观反映它的状态。在开始,触发按钮看上去和普通按钮一样。如果按下按钮,它就停留在下面。触发按钮需要再按一次才能弹回来。下面是触发按钮的两种状态:

  弹起状态                            按下状态

 

       可以使用gtk_toggle_button_new_with_labal函数建立带标号的触发按钮,或者使用gtk_toggle_button_new函数建立不带标号的触发按钮。因为触发按钮是由普通按钮派生而来的,所以所有可以用在普通按钮上的事件和函数都可以用在触发按钮上。并且触发按钮增加了一个信号”toggled(触发)”,当按钮的状态改变时它发送”触发”信号。

2.

名称::

gtk_toggle_button_new

gtk_toggle_button_new_with_label

功能:

创建一个不带标号的触发按钮 (gtk_toggle_button_new)

创建一个带标号的触发按钮   (gtk_toggle_button_new_with_label)

头文件:

#include <gtk/gtk.h>

函数原形:

GtkWidget *gtk_toggle_button_new(void);

GtkWidget *gtk_toggle_button_new_with_labal(const gchar *label);

参数:

label   触发按钮正文

返回值:

新的触发按钮

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

我们对button1程序稍加改动,并且添加了对“toggled”信号的处理。

/*button2.c*/

#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_toggle_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_signal_connect(GTK_OBJECT(button),”toggle”,GTK_SIGNAL_FUNC(button_event),”toggle”); /*登记按钮toggle信号的回调函数*/ 

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);

}

 

当用户点击Button然后移开,终端会显示如下信息:

Button event: enter

Button event: pressed

Button event: toggled

Button event: clicked

Button event: released

Button event: leave

 

可以看到与上面的区别是增加了Button event: toggled信息。这是由“触发”信号产生的。

 

三、检查按钮

       检查按钮就是我们通常来说的复选框。检查按钮(check button,GtkCheckButton)由触发按钮(GtkToggleButton)派生而来。GtkCheckButton的表现类似GtkToggleButton。两者的主要差别是按钮在屏幕上的显示方式不同。两种构件完成同样的功能,选择哪一种按钮纯粹是用户爱好。下面是选择按钮的两种状态。

 

                         

 

       下面是创建检查按钮的函数:

3.

名称::

gtk_check_button_new

gtk_check_button_new_with_label

功能:

创建一个不带标号的检查按钮 (gtk_check_button_new)

创建一个带标号的检查按钮   (gtk_check_button_new_with_label)

头文件:

#include <gtk/gtk.h>

函数原形:

GtkWidget *gtk_check_button_new(void);

GtkWidget *gtk_check_button_new_with_labal(const gchar *label);

参数:

label   检查按钮正文

返回值:

新的检查按钮

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

只要把button2.c中的button=gtk_toggle_button_new_with_label(“Check Button”);

替换为:button=gtk_check_button_new_with_label(“Button”);就可创建如图所示的按钮

了。

 

相关阅读 更多 +
排行榜 更多 +
rento大富翁手游

rento大富翁手游

休闲益智 下载
冲撞赛车3无限金币版

冲撞赛车3无限金币版

赛车竞速 下载
电动火车模拟器内置菜单

电动火车模拟器内置菜单

赛车竞速 下载