今天继续做的是昨天那个界面对的优化,直接贴下代码,

 void click_radio(GtkWidget *widget,gpointer *data)
{
3  GtkWidget *dialog;
  GtkWidget *box;
5  GtkWidget *pbox;
6  GtkWidget *bbox;
  GtkWidget *password_label,*password_entry;
8  GtkWidget *button1;
9  GtkWidget *button2; dialog=gtk_dialog_new();
  gtk_window_set_modal((GtkWindow*)dialog,GTK_DIALOG_MODAL); //设置窗口模式,这里设置的是除该窗口之外的其他窗口无法进行操作
gtk_window_set_title(GTK_WINDOW(dialog),"管理员登陆");
g_signal_connect(G_OBJECT(dialog),"destroy",G_CALLBACK(gtk_widget_destroy),NULL);
box=GTK_DIALOG(dialog)->vbox;
ubox=gtk_hbox_new(TRUE,);
pbox=gtk_hbox_new(TRUE,);
bbox=gtk_hbox_new(TRUE,); password_label=gtk_label_new("登陆口令");
password_entry=gtk_entry_new();
gtk_entry_set_visibility(GTK_ENTRY(password_entry),FALSE);
  
   button1=gtk_button_new_with_label("确定");
   button2=gtk_button_new_with_label("取消");
   g_signal_connect(G_OBJECT(button2),"clicked",G_CALLBACK(destroy),dialog);
g_signal_connect(G_OBJECT(button1),"clicked",G_CALLBACK(login),(gpointer*)password_entry); gtk_box_pack_start(GTK_BOX(pbox),password_label,TRUE,FALSE,);
gtk_box_pack_start(GTK_BOX(pbox),password_entry,TRUE,FALSE,);
   gtk_box_pack_start(GTK_BOX(bbox),button1,TRUE,FALSE,);
   gtk_box_pack_start(GTK_BOX(bbox),button2,TRUE,FALSE,);      gtk_box_pack_start(GTK_BOX(box),ubox,FALSE,FALSE,);
gtk_box_pack_start(GTK_BOX(box),pbox,FALSE,FALSE,);
      gtk_box_pack_start(GTK_BOX(box),bbox,FALSE,FALSE,);    gtk_widget_show_all(dialog);
       //gtk_dialog_run(GTK_DIALOG(dialog));
        //gtk_widget_destroy(dialog);

第26和27行调用的函数为

 #define pwd "123456"
void destroy(GtkWidget *widget,gpointer *data) //点击取消按钮的事件
{
gtk_widget_destroy(GTK_WIDGET(data));
}
void login(GtkWidget *widget,gpointer *data) //点击确定按钮的事件
{
GtkWidget *dialog;
GtkEntry *entry = (GtkEntry*) data;
const gchar* password = gtk_entry_get_text( entry );
if(strcmp(password,pwd)==)
{
g_print("yes");
dialog = gtk_message_dialog_new(NULL,GTK_DIALOG_MODAL,GTK_MESSAGE_INFO,GTK_BUTTONS_OK,"登陆成功");
}
else
{g_print("no");
dialog = gtk_message_dialog_new(NULL,GTK_DIALOG_MODAL,GTK_MESSAGE_INFO,GTK_BUTTONS_CLOSE,"用户口令错误");
}
printf("%s\n",password);
gtk_dialog_run(GTK_DIALOG(dialog));
gtk_widget_destroy(dialog);
}

这里其实还有一个问题,就是点击确定按钮之后,判断比较如果成功,怎样才能关掉上一个窗口然后打开一个新窗口。其他的有点问题就是调用的这两个函数传递的参数了,还有就是如果click_radio这个函数中加上最后注释掉的那两句运行的时候就会出现一个错误。

(login:9959): Gtk-CRITICAL **: IA__gtk_widget_destroy: assertion 'GTK_IS_WIDGET (widget)' failed
错误信息就是这样,还是要好好看看gtk的函数内容。继续加油!

gtk+学习笔记(五)的更多相关文章

  1. C#可扩展编程之MEF学习笔记(五):MEF高级进阶

    好久没有写博客了,今天抽空继续写MEF系列的文章.有园友提出这种系列的文章要做个目录,看起来方便,所以就抽空做了一个,放到每篇文章的最后. 前面四篇讲了MEF的基础知识,学完了前四篇,MEF中比较常用 ...

  2. (转)Qt Model/View 学习笔记 (五)——View 类

    Qt Model/View 学习笔记 (五) View 类 概念 在model/view架构中,view从model中获得数据项然后显示给用户.数据显示的方式不必与model提供的表示方式相同,可以与 ...

  3. java之jvm学习笔记五(实践写自己的类装载器)

    java之jvm学习笔记五(实践写自己的类装载器) 课程源码:http://download.csdn.net/detail/yfqnihao/4866501 前面第三和第四节我们一直在强调一句话,类 ...

  4. Learning ROS for Robotics Programming Second Edition学习笔记(五) indigo computer vision

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  5. Typescript 学习笔记五:类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  6. ES6学习笔记<五> Module的操作——import、export、as

    import export 这两个家伙对应的就是es6自己的 module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成一个个功能相对独立但相互依赖的小 ...

  7. muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor

    目录 muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor Connector 系统函数connect 处理非阻塞connect的步骤: Connetor时序图 Accep ...

  8. python3.4学习笔记(五) IDLE显示行号问题,插件安装和其他开发工具介绍

    python3.4学习笔记(五) IDLE显示行号问题,插件安装和其他开发工具介绍 IDLE默认不能显示行号,使用ALT+G 跳到对应行号,在右下角有显示光标所在行.列.pycharm免费社区版.Su ...

  9. Go语言学习笔记五: 条件语句

    Go语言学习笔记五: 条件语句 if语句 if 布尔表达式 { /* 在布尔表达式为 true 时执行 */ } 竟然没有括号,和python很像.但是有大括号,与python又不一样. 例子: pa ...

  10. 【opencv学习笔记五】一个简单程序:图像读取与显示

    今天我们来学习一个最简单的程序,即从文件读取图像并且创建窗口显示该图像. 目录 [imread]图像读取 [namedWindow]创建window窗口 [imshow]图像显示 [imwrite]图 ...

随机推荐

  1. Qt 查找功能

    版权声明 该文章原创于Qter开源社区(www.qter.org),作者yafeilinux,转载请注明出处!     导语 这一篇我们来加上查找菜单的功能.因为要涉及Qt Creator的很多实用功 ...

  2. RabbitMQ 相关概念

    RabbitMQ 整体上是一个生产者与消费者模型,主要负责接收.存储和转发消息.可以把消息传递的过程想象成:当你讲一个包裹送到邮局,邮局会暂存并最终将邮件通过邮递员送到收件人的手上,RabbitMQ ...

  3. beego 定义一个存储变量的容器

    golang 这种语言相对于 php 有个好处是,不用每次请求都重复一些不必要的初始化操作,golang 进程开启之后,即使请求结束,相关的资源也会驻留在内存中. 所以我们可以把一些不需要重复初始化的 ...

  4. mysql查改

    1 MySQL UNION 操作符语法格式: SELECT expression1, expression2, ... expression_n FROM tables [WHERE conditio ...

  5. Cloudstack安装(二)

    Cloudstack安装 官方文档参考: http://docs.cloudstack.apache.org/projects/cloudstack-installation/en/4.9/qig.h ...

  6. VS2013配置 OpenCV3.0【实测有效】

    下载OpenCV3.0.0 到OpenCV官网下载对应版本http://opencv.org/downloads.html,然后安装到相应目录,本例是安装到D:\opencv300目录中. 配置环境变 ...

  7. Hadoop生态圈-桶表和分区表

    Hadoop生态圈-桶表和分区表 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  8. mysql 复制表数据,表结构的3种方法

    什么时候我们会用到复制表?例如:我现在对一张表进行操作,但是怕误删数据,所以在同一个数据库中建一个表结构一样,表数据也一样的表,以作备份.如果用mysqldump比较麻烦,备份.MYD,.MYI这样的 ...

  9. SSM简单整合教程&测试事务

    自打来了博客园就一直在看帖,学到了很多知识,打算开始记录的学习到的知识点 今天我来写个整合SpringMVC4 spring4 mybatis3&测试spring事务的教程,如果有误之处,还请 ...

  10. 《区块链100问》第75集:大零币Zcash是什么?

    Zcash,全称Zero Cash,简称ZEC,中文叫大零币,研发者为Zooko Wilcox,诞生于2011年11月9日. 采用零知识证明机制提供完全的支付保密性,是目前匿名性最强的数字资产.零知识 ...