分类: 嵌入式
2009-11-26 13:44:51
一、对话框构件
对话框构件非常简单,事实上它仅仅是一个预先组装了几个构件到里面的窗口。对话框的定义如下:
struct GtkDialog{
GtkWindow window;
GtkWidget *vbox;
GtkWidget *action_area;
};
从上面可以看到,对话框只是简单地创建一个窗口,并在顶部组装一个G t k V B o x,然后在G t k V B o x中组装一个分隔线,再加一个称为“活动区”的G t k H B o x。我们可以在该“活动区”添加一些按纽。
对话框用gtk_dialog_new创建。
1.
名称:: |
gtk_dialog_new |
功能: |
创建对话框构件 |
头文件: |
#include |
函数原形: |
GtkWidget *gtk_dialog_new(void); |
参数: |
无 |
返回值: |
新的对话框构件 |
#include void button_event(GtkWidget *widget, gpointer *data); void destroy(GtkWidget *widget, gpointer *data); 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),”destroy”,G_CALLBACK(gtk_main_quit),NULL); button=gtk_button_new_with_label(“Exit”); gtk_container_add(GTK_CONTAINER(window),button); gtk_signal_connect(GTK_OBJECT(button),”clicked”,G_CALLBACK(button_event),NULL); gtk_widget_show(button); gtk_widget_show(window); gtk_main(); } void button_event(GtkWidget *widget, gpointer *data) { GtkWidget *button; GtkWidget *dialog; dialog=gtk_dialog_new( ); button=gtk_button_new_with_label(“Yes”); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area),button,TRUE,TRUE,0); gtk_signal_connect(GTK_OBJECT(button),”clicked”,G_CALLBACK(gtk_main_quit),NULL); gtk_widget_show(button); button=gtk_button_new_with_label(“No”); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area),button,TRUE,TRUE,0); gtk_signal_connect(GTK_OBJECT(button),”clicked”,G_CALLBACK(destroy),dialog); gtk_widget_show(button); gtk_widget_show(dialog); } void destroy(GtkWidget *widget, gpointer *data) { gtk_widget_destroy(GTK_WIDGET(data)); } |
程序运行后会得到如下界面:
当用户点击按纽会得到如下对话框。
如果用户电击Yes程序退出,如果用户点击No对话框消失。