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

 1 void click_radio(GtkWidget *widget,gpointer *data)
 2 {
 3  GtkWidget *dialog;
 4  GtkWidget *box;
 5  GtkWidget *pbox;
 6  GtkWidget *bbox;
 7  GtkWidget *password_label,*password_entry;
 8  GtkWidget *button1;
 9  GtkWidget *button2;
10
11         dialog=gtk_dialog_new();
12       gtk_window_set_modal((GtkWindow*)dialog,GTK_DIALOG_MODAL);    //设置窗口模式,这里设置的是除该窗口之外的其他窗口无法进行操作
13         gtk_window_set_title(GTK_WINDOW(dialog),"管理员登陆");
14         g_signal_connect(G_OBJECT(dialog),"destroy",G_CALLBACK(gtk_widget_destroy),NULL);
15     box=GTK_DIALOG(dialog)->vbox;
16     ubox=gtk_hbox_new(TRUE,5);
17     pbox=gtk_hbox_new(TRUE,5);
18     bbox=gtk_hbox_new(TRUE,5);
19
20         password_label=gtk_label_new("登陆口令");
21         password_entry=gtk_entry_new();
22         gtk_entry_set_visibility(GTK_ENTRY(password_entry),FALSE);
23   
24       button1=gtk_button_new_with_label("确定");
25       button2=gtk_button_new_with_label("取消");
26      g_signal_connect(G_OBJECT(button2),"clicked",G_CALLBACK(destroy),dialog);
27       g_signal_connect(G_OBJECT(button1),"clicked",G_CALLBACK(login),(gpointer*)password_entry);
28
29         gtk_box_pack_start(GTK_BOX(pbox),password_label,TRUE,FALSE,5);
30         gtk_box_pack_start(GTK_BOX(pbox),password_entry,TRUE,FALSE,5);
31       gtk_box_pack_start(GTK_BOX(bbox),button1,TRUE,FALSE,5);
32       gtk_box_pack_start(GTK_BOX(bbox),button2,TRUE,FALSE,5);
33
34         gtk_box_pack_start(GTK_BOX(box),ubox,FALSE,FALSE,5);
35            gtk_box_pack_start(GTK_BOX(box),pbox,FALSE,FALSE,5);
36          gtk_box_pack_start(GTK_BOX(box),bbox,FALSE,FALSE,5);
37
38       gtk_widget_show_all(dialog);       //gtk_dialog_run(GTK_DIALOG(dialog));        //gtk_widget_destroy(dialog);

第26和27行调用的函数为

 1 #define pwd "123456"
 2 void destroy(GtkWidget *widget,gpointer *data)        //点击取消按钮的事件
 3 {
 4     gtk_widget_destroy(GTK_WIDGET(data));
 5 }
 6 void login(GtkWidget *widget,gpointer *data)        //点击确定按钮的事件
 7 {
 8     GtkWidget *dialog;
 9     GtkEntry *entry = (GtkEntry*) data;
10     const gchar* password = gtk_entry_get_text( entry );
11     if(strcmp(password,pwd)==0)
12         {
13             g_print("yes");
14             dialog = gtk_message_dialog_new(NULL,GTK_DIALOG_MODAL,GTK_MESSAGE_INFO,GTK_BUTTONS_OK,"登陆成功");
15         }
16     else
17         {g_print("no");
18         dialog = gtk_message_dialog_new(NULL,GTK_DIALOG_MODAL,GTK_MESSAGE_INFO,GTK_BUTTONS_CLOSE,"用户口令错误");
19         }
20         printf("%s\n",password);
21         gtk_dialog_run(GTK_DIALOG(dialog));
22            gtk_widget_destroy(dialog);
23 }

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

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

转载于:https://www.cnblogs.com/kingos/p/4545167.html

gtk+学习笔记(五)相关推荐

  1. python函数是一段具有特定功能的语句组_Python学习笔记(五)函数和代码复用

    本文将为您描述Python学习笔记(五)函数和代码复用,具体完成步骤: 函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Pyth ...

  2. Ethernet/IP 学习笔记五

    Ethernet/IP 学习笔记五 Accessing data within a device using a non-time critical message (an explicit mess ...

  3. StackExchange.Redis学习笔记(五) 发布和订阅

    StackExchange.Redis学习笔记(五) 发布和订阅 原文:StackExchange.Redis学习笔记(五) 发布和订阅 Redis命令中的Pub/Sub Redis在 2.0之后的版 ...

  4. 吴恩达《机器学习》学习笔记五——逻辑回归

    吴恩达<机器学习>学习笔记五--逻辑回归 一. 分类(classification) 1.定义 2.阈值 二. 逻辑(logistic)回归假设函数 1.假设的表达式 2.假设表达式的意义 ...

  5. 好程序员教程分析Vue学习笔记五

    好程序员教程分析Vue学习笔记五,上次我们学习了Vue的组件,这次我们来学习一下路由的使用.在Vue中,所谓的路由其实跟其他的框架中的路由的概念差不多,即指跳转的路径. 注意:在Vue中,要使用路由, ...

  6. 【AngularJs学习笔记五】AngularJS从构建项目开始

    为什么80%的码农都做不了架构师?>>>    #0 系列目录# AngularJs学习笔记 [AngularJs学习笔记一]Bower解决js的依赖管理 [AngularJs学习笔 ...

  7. ROS学习笔记五:理解ROS topics

    ROS学习笔记五:理解ROS topics 本节主要介绍ROS topics并且使用rostopic和rqt_plot命令行工具. 例子展示 roscore 首先运行roscore系列服务,这是使用R ...

  8. Spring Boot 框架学习笔记(五)( SpringSecurity安全框架 )

    Spring Boot 框架学习笔记(五) SpringSecurity安全框架 概述 作用 开发示例: 1. 新建项目 2. 引入依赖 3. 编写`SecurityConfig`类,实现认证,授权, ...

  9. Java学习笔记(五):一张图总结完JVM8基础概念

    Java学习笔记(五):一张图总结完JVM8基础概念 引文 最近在学习JVM的相关内容,好不容易把基础概念全部都学了一遍,却发现知识网络是零零散散的.迫不得已,只好再来一次总的归纳总结.为了更好的理解 ...

  10. Python学习笔记五:控制语句

    Python学习笔记五:控制语句 Pycharm 开发环境的下载安装配置_项目管理 控制语句 Pycharm 开发环境的使用 Pycharm 下载和安装 激活和选择不同UI 风格 创建项目和初始化配置 ...

最新文章

  1. 不使用powerdesigner手工绘制用例图例题详解
  2. 【Zookeeper】Zookeeper部署笔记
  3. css3鼠标果果变手型代码_css3 鼠标悬浮动画效果
  4. OPPO R11发布盛典昨晚举行,精彩程度不亚于大型晚会!
  5. PyTorch基础(四)-----数据加载和预处理
  6. boost::mp11::mp_transform_if相关用法的测试程序
  7. web安全----XSS漏洞之基本原理
  8. sql查询 关联帖子_MySQL的大分页查询该如何优化?
  9. bluestacks手机模拟器安装qq或微信时,鼠标左键点聊天编辑框后会自动输入 c 字母
  10. 30秒清除你电脑中的垃圾
  11. win7仿win98电脑主题
  12. Vayo-CAM365功能详解(二)
  13. 谷歌html编辑器代码,一行代码让谷歌浏览器变成在线编辑器
  14. Android Studio 获取Shal值
  15. python拆分pdf文件
  16. 实现一个直播视频app源码的邀请码功能
  17. python画散点图<plt.scatter() 和sns.scatterplot()>
  18. android开源框架总结
  19. C++实现K-means,聚类原理解析(并用在图片像素点聚类)
  20. Linux内核移植和根文件系统制作(详细步骤精讲)

热门文章

  1. 常用类回顾之(String类)
  2. 开源组件DocX导出Word
  3. Ubuntu下文件权限管理
  4. 基于wemos D1的无线遥控灯(433m无线模块)
  5. Java中lombok @Builder注解使用详解
  6. hive建立内部表映射hbase_快手 HBase 在千亿级用户特征数据分析中的应用与实践...
  7. 程序人生:一个员工的离职成本到底有多高,看完你就懂了!
  8. 2017已过半,这半年,你累吗?
  9. nmap结果导出html,nmap的简单使用 - osc_ijgldkz9的个人空间 - OSCHINA - 中文开源技术交流社区...
  10. java struts2值栈ognl_Struts2的值栈和OGNL牛逼啊