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

 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. ACF/PACF,残差白噪声的检验问题

    关于自相关.偏自相关: 一.自协方差和自相关系数       p阶自回归AR(p)       自协方差 r(t,s)=E[X(t)-EX(t)][X(s)-EX(s)]       自相关系数ACF ...

  2. Java入门:基础算法之检查素数

    程序提示用户输入一个数,然后检查所输入的数是否是素数. import java.util.Scanner; class PrimeCheck { public static void main(Str ...

  3. CODEVS 2171 棋盘覆盖

    2171 棋盘覆盖 给出一张nn(n<=100)的国际象棋棋盘,其中被删除了一些点,问可以使用多少12的多米诺骨牌进行掩盖. 错误日志: 直接在模板上调整 \(maxn\) 时没有在相应邻接表数 ...

  4. JavaScript中的apply()和call()

    可以将call()和apply()看做是某个对象的方法,通过调用方法的形式来间接调用函数. call()和apply()的第一个实参是要调用函数的母对象,它是调用上下文,在函数体内通过this来获得对 ...

  5. SFTP上传下载文件、文件夹常用操作

    SFTP上传下载文件.文件夹常用操作 1.查看上传下载目录lpwd 2.改变上传和下载的目录(例如D盘):lcd  d:/ 3.查看当前路径pwd 4.下载文件(例如我要将服务器上tomcat的日志文 ...

  6. 转:Launch Screen在iOS7/8中的实现

    目前项目中需要解决的问题是: 兼容iOS7和iOS8,之前的版本不需要支持了 实现兼容3.5.4.4.7和5.5寸屏幕,竖屏的Lauch Screen 创建所需的PNG图片 有关iPhone6/6+相 ...

  7. "\n" 与"\r" 区别

    关于换行和回车其实平时我们不太在意,所以关于两者的区别也不太清楚,在平时开发时可能会遇到一些文件处理的问题,放到不同的操作系统上出现各种坑.那么回车和换行到底有哪些区别呢?今天咱们就来总结一下. 1. ...

  8. 解决body设置height:100%无效问题

    1. 解决html设置height:100%无效问题 通常我们需要让自己的网页内容能够更好的适配各种屏幕大小,会采用height:100%,但是我们发现问题出来了,height:100%无效,其实解决 ...

  9. 超简单将Centos的yum源更换为国内的阿里云源

    自己的yum源不知道什么时候给改毁了……搜到了个超简单的方法将yum源更换为阿里的源 完全参考 http://mirrors.aliyun.com/help/centos?spm=5176.bbsr1 ...

  10. js计时器方法的使用

    js中计时器重要使用window.setInterval()方法和window.setTimeout()方法, 其中setInterval()方法的作用是每隔一段时间执行一次方法,而window.se ...