找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2623|回复: 0
打印 上一主题 下一主题
收起左侧

GTK的对话框【原】

[复制链接]
跳转到指定楼层
楼主
ID:72519 发表于 2015-1-23 19:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     对话框是GUI系统跟用户交流的桥梁,是人机交互的重要手段;没有了对话框,就像人们不能用电一样,会给系统带来很多的不便。
        GTK的对话框数据结构如下:
typedef struct
{
GtkWidget *vbox;
GtkWidget *action_area;
} GtkDialog;从它的结构体上来看,对话框的构建其实很简单,仅仅是预装了几个控件的窗体。说对话框是窗体,一点也不过分,因为对话框是用来弥补窗体top-level window在某些场合的不足。
        GtkDialog提供了两个成员,分别是vbox跟action_area(活动域),这两个区域之间有一条分隔线;活动域其实是一个水平的盒子,分隔线可以通过函数gtk_dialog_set_has_separator()人为的显示或隐藏。
        创建对话框有两个函数:
GtkWidget *gtk_dialog_new( void );和
GtkWidget* gtk_dialog_new_with_buttons (const gchar *title,
                                        GtkWindow *parent,
                                        GtkDialogFlags flags,
                                        const gchar *first_button_text,
                                        ...);第一函数创建一个空白的没有任何信息的对话框,而第二个创建一个带button的对话框。当然对于第一个而言,我们可以通过如下方法添加buntton:
button = ...
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
     button, TRUE, TRUE, 0);
gtk_widget_show (button);这里重点讲解下第二个函数gtk_dialog_new_with_buttons的参数,第一二两个参数分别表示对话框的标题和对话框的父窗体,第三个参数flags是个枚举类型,有三个类型:
• GTK_DIALOG_MODAL::强迫对话框为模式对话框,何为模式对话框,一会介绍
• GTK_DIALOG_DESTROY_WITH_PARENT:对话框的父窗体消失时,它也跟着结束,用这个属性来创建非模式对话框。
• GTK_DIALOG_NO_SEPARATOR: 隐藏vbox跟action_area(活动域)之间的分割线。第四个及以后的参数是字符型的,它可以用stock ID 比如 GTK_STOCK_OK或者用一个字符串来代替。
        当对话框组建好后,有一种显示对话框的方法是调用gtk_dialog_run(),因为它会调用gtk_widget_show_all();当对话框发生某些动作时,比如按了某个button,它会返回一个独立id,我们可以根据id来判断对话框下一步动作。例如GtkDialog的说明文件中有这么一段实例程序:
gint result = gtk_dialog_run (GTK_DIALOG (dialog));
switch (result)
   {
     case GTK_RESPONSE_ACCEPT:
        do_application_specific_something ();
        break;
     default:
        do_nothing_since_dialog_was_cancelled ();
        break;
   }
gtk_widget_destroy (dialog);至此,当id返回时,你必须调用gtk_widget_destroy()结束对话框或者释放对话框的内存。
        模式对话框跟非模式对话框的区别:前者只要对话框存在,对话框的父窗体就不能响应任何外在的动作,后者是尽管对话框存在,但是不影响其父窗体对外部事件的响应。而在GTK中,当你调用了gtk_dialog_run()时,对话框总会设置成模式对话框,这可以从它实现源码得知。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表