gtk+学习笔记(五)
今天继续做的是昨天那个界面对的优化,直接贴下代码,
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+学习笔记(五)的更多相关文章
- C#可扩展编程之MEF学习笔记(五):MEF高级进阶
好久没有写博客了,今天抽空继续写MEF系列的文章.有园友提出这种系列的文章要做个目录,看起来方便,所以就抽空做了一个,放到每篇文章的最后. 前面四篇讲了MEF的基础知识,学完了前四篇,MEF中比较常用 ...
- (转)Qt Model/View 学习笔记 (五)——View 类
Qt Model/View 学习笔记 (五) View 类 概念 在model/view架构中,view从model中获得数据项然后显示给用户.数据显示的方式不必与model提供的表示方式相同,可以与 ...
- java之jvm学习笔记五(实践写自己的类装载器)
java之jvm学习笔记五(实践写自己的类装载器) 课程源码:http://download.csdn.net/detail/yfqnihao/4866501 前面第三和第四节我们一直在强调一句话,类 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(五) indigo computer vision
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- Typescript 学习笔记五:类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- ES6学习笔记<五> Module的操作——import、export、as
import export 这两个家伙对应的就是es6自己的 module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成一个个功能相对独立但相互依赖的小 ...
- muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor
目录 muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor Connector 系统函数connect 处理非阻塞connect的步骤: Connetor时序图 Accep ...
- python3.4学习笔记(五) IDLE显示行号问题,插件安装和其他开发工具介绍
python3.4学习笔记(五) IDLE显示行号问题,插件安装和其他开发工具介绍 IDLE默认不能显示行号,使用ALT+G 跳到对应行号,在右下角有显示光标所在行.列.pycharm免费社区版.Su ...
- Go语言学习笔记五: 条件语句
Go语言学习笔记五: 条件语句 if语句 if 布尔表达式 { /* 在布尔表达式为 true 时执行 */ } 竟然没有括号,和python很像.但是有大括号,与python又不一样. 例子: pa ...
- 【opencv学习笔记五】一个简单程序:图像读取与显示
今天我们来学习一个最简单的程序,即从文件读取图像并且创建窗口显示该图像. 目录 [imread]图像读取 [namedWindow]创建window窗口 [imshow]图像显示 [imwrite]图 ...
随机推荐
- 洛谷P3201 [HNOI2009]梦幻布丁(链表 + 启发式合并)
题目链接 给出 \(n\) 个布丁,每个补丁都有其颜色.现在有 \(m\) 次操作,每次操作将第 \(x_i\) 种颜色全部变为第 \(y_i\) 种颜色. 操作中可能会插入询问,回答目前总共有多少段 ...
- ICMP类型和代号对照表
ICMP类型 TYPE CODE Description Query Error 0 0 Echo Reply——回显应答(Ping应答) x 3 0 Network Unreachable——网 ...
- poj 2774 后缀数组 两个字符串的最长公共子串
Long Long Message Time Limit: 4000MS Memory Limit: 131072K Total Submissions: 31904 Accepted: 12 ...
- 利用oneproxy实现mysql读写分离搭建笔记
功能: 1.具有SQL白名单(防SQL注入)及IP白名单功能的SQL防火墙软件 2.数据库故障切换 3.读写分离 4.分库分表 一.下载 官网下载:http://www.onexsoft. ...
- mysql 同步数据到 ElasticSearch 的方案
MySQL Binlog 要通过 MySQL binlog 将 MySQL 的数据同步给 ES, 我们只能使用 row 模式的 binlog.如果使用 statement 或者 mixed forma ...
- python常用模块(3)
ConfigParser模块学习 ConfigParser模块在python中是用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(section),每个节可 ...
- Spring 中出现相同名称的 bean 的处理机制
小总结: 如果启用组件扫描,bean名称不同时,Spring将尝试创建一个bean,即使该类的bean已经在spring-config.xml中定义了. 但是,如果在spring配置文件中定义的bea ...
- soj1011. Lenny's Lucky Lotto
1011. Lenny's Lucky Lotto Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description Lenny like ...
- ashx误删后,未能创建类型
描述 今天,因为临时有事儿,需要去一趟其他城市,项目比较赶.所以只能在车上继续敲代码,倒霉的触摸板让我误删一个ashx一般处理程序.好死不死的这个文件的代码还很长. 我的做法是[垃圾桶]→[还原]→V ...
- CodeForces - 1040B Shashlik Cooking
Long story short, shashlik is Miroslav's favorite food. Shashlik is prepared on several skewers simu ...