GTK入门学习:布局练习之计算器

接下来,我们做一个布局练习,如下图:

我们用表格布局实现,表格布局参考坐标如下:

这里我们用到行编辑控件( GtkEntry )。

行编辑的创建:

GtkWidget * gtk_entry_new(void);

返回值:行编辑指针行

编辑内容的设置:

void gtk_entry_set_text (GtkEntry *entry,const gchar *text);

entry: 行编辑

text: 需要设置的内容

设置行编辑是否允许编辑:

void gtk_editable_set_editable(GtkEditable *editable, gboolean is_editable);

editable:行编辑

is_editable:TRUE代表可编辑,FALSE不允许编辑

完整代码如下:

 #include <gtk/gtk.h>

 int main(int argc,char *argv[])
 {
         //1.gtk环境初始化
         gtk_init(&argc, &argv);

         //2.创建一个窗口
         GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

         //3.创建一个表格容器5行4列
         GtkWidget *table = gtk_table_new(5,4,TRUE);
         //将table加入到window中
         gtk_container_add(GTK_CONTAINER(window), table);

         //4.创建一个行编辑
         GtkWidget *entry = gtk_entry_new();
         //设置行编辑的内容
         gtk_entry_set_text(GTK_ENTRY(entry), "2+2=4");
         //设置行编辑不允许编辑,只能显示用
         gtk_editable_set_editable(GTK_EDITABLE(entry), FALSE);

         //5.创建多个按钮
         GtkWidget *button0 = gtk_button_new_with_label("0");//数值键0
         GtkWidget *button1 = gtk_button_new_with_label("1");//数值键1
         GtkWidget *button2 = gtk_button_new_with_label("2");//数值键2
         GtkWidget *button3 = gtk_button_new_with_label("3");//数值键3
         GtkWidget *button4 = gtk_button_new_with_label("4");//数值键4
         GtkWidget *button5 = gtk_button_new_with_label("5");//数值键5
         GtkWidget *button6 = gtk_button_new_with_label("6");//数值键6
         GtkWidget *button7 = gtk_button_new_with_label("7");//数值键7
         GtkWidget *button8 = gtk_button_new_with_label("8");//数值键8
         GtkWidget *button9 = gtk_button_new_with_label("9");//数值键9

         GtkWidget *button_add = gtk_button_new_with_label("+");//加号
         GtkWidget *button_minus = gtk_button_new_with_label("-");//减号
         GtkWidget *button_mul = gtk_button_new_with_label("*");//乘号
         GtkWidget *button_div = gtk_button_new_with_label("/");//除号
         GtkWidget *button_equal = gtk_button_new_with_label("=");//等号
         GtkWidget *button_delete = gtk_button_new_with_label("c");//退格键

         //6.布局将上面的按钮均放入table容器中
         gtk_table_attach_defaults(GTK_TABLE(table), entry, 0, 4, 0, 1);

         gtk_table_attach_defaults(GTK_TABLE(table), button0, 0, 1, 4, 5);
         gtk_table_attach_defaults(GTK_TABLE(table), button1, 0, 1, 3, 4);
         gtk_table_attach_defaults(GTK_TABLE(table), button2, 1, 2, 3, 4);
         gtk_table_attach_defaults(GTK_TABLE(table), button3, 2, 3, 3, 4);
         gtk_table_attach_defaults(GTK_TABLE(table), button4, 0, 1, 2, 3);
         gtk_table_attach_defaults(GTK_TABLE(table), button5, 1, 2, 2, 3);
         gtk_table_attach_defaults(GTK_TABLE(table), button6, 2, 3, 2, 3);
         gtk_table_attach_defaults(GTK_TABLE(table), button7, 0, 1, 1, 2);
         gtk_table_attach_defaults(GTK_TABLE(table), button8, 1, 2, 1, 2);
         gtk_table_attach_defaults(GTK_TABLE(table), button9, 2, 3, 1, 2);

         gtk_table_attach_defaults(GTK_TABLE(table), button_add, 1, 2, 4, 5);
         gtk_table_attach_defaults(GTK_TABLE(table), button_minus, 2, 3, 4, 5);
         gtk_table_attach_defaults(GTK_TABLE(table), button_mul , 3, 4, 2, 3);
         gtk_table_attach_defaults(GTK_TABLE(table), button_div, 3, 4, 3, 4);
         gtk_table_attach_defaults(GTK_TABLE(table), button_equal, 3, 4, 4, 5);
         gtk_table_attach_defaults(GTK_TABLE(table), button_delete, 3, 4, 1, 2);

         //7.显示所有控件
         gtk_widget_show_all(window);

         //8.主事件循环
         gtk_main();

         return 0;
 }

运行结果:

源代码下载:http://download.csdn.net/download/lianghe_work/8934943

转自:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-08 13:57:15

GTK入门学习:布局练习之计算器的相关文章

GTK入门学习:布局容器之表格布局

学习水平和垂直布局容器后,我们几乎能布出任何风格的布局,只需要嵌套使用水平布局容器和垂直布局容器即可.假如我们要完成下图的布局,我们该怎么做呢? 1)创建一个垂直布局容器( A ) 2)创建一个水平布局容器( B ),一个close按钮( C ) 3)将水平布局容器和close按钮添加到垂直布局容器里( 将 B 和 C 添加到 A ) 4)创建button 1按钮( D ) 和 button 2按钮( E ) 5)再将button 1按钮 和 button 2按钮添加到水平布局容器里( 将 D

GTK入门学习:布局容器之固定布局

前面我们学习的水平.垂直和表格布局容器,控件会跟着容器大小的变化进行自动适应,而固定布局容器里的控件则不会跟着变化( 则固定不变 ). 固定布局的创建: GtkWidget *gtk_fixed_new(void); 返回值:固定布局容器指针 固定布局容器添加控件: void gtk_fixed_put( GtkFixed *fixed, GtkWidget *widget, gint x, gint y ); fixed:容纳控件的容器 widget:要添加的控件 x, y:控件摆放位置的起点

GTK入门学习:布局容器之水平布局

如果我们希望窗口里多放添加几个控件,直接添加是不成功的,因为窗口只能容纳一个控件的容器.这时候,我们需要借助布局容器,我们先把布局容器添加到窗口里,然后再把所需要添加的控件放在布局容器里. 布局容器的主要分类:水平布局( GtkHBox).垂直布局(GtkVBox ).表格布局(GtkTable).固定布局(GtkFixed ). 水平布局容器: 水平布局容器的创建: GtkWidget *gtk_hbox_new( gboolean homogeneous, gint spacing ); h

GTK入门学习:布局容器之垂直布局

垂直布局和水平布局的用法基本是一样,无非是新建垂直布局容器接口,还有控件摆放的方向不同. 垂直布局容器的创建: GtkWidget *gtk_vbox_new( gboolean homogeneous, gint spacing ); 完整代码如下: #include <gtk/gtk.h> int main(int argc, char *argv[]) { //1.gtk初始化 gtk_init(&argc, &argv); //2.创建一个窗口 GtkWidget *w

GTK入门学习:glade的使用

搭建好环境后,在终端敲 glade 即可启动glade工具. glade的整体框图: 常用控件选择区:列举了常用的控件,常用的有三类:顶层(主窗口等),容器(各种布局容器等),控制和显示(按钮.便签.图片控件等) 当鼠标放在控件时,会自动显示控件的中文文字,同时,还能人为设置,如下图: 界面编辑区:把控件拖放在这进行进行相应的布局 控件监视区:能够看到界面上所有的控件,同时,选中这个控件,可以看到这个控件的具体类型 属性编辑区:编辑选中控件的常用属性,如窗口设置标题.窗口类型.屏幕上显示位置等.

GTK入门学习:信号与回调函数

前面我们学习的GTK界面都是静态的,我们按下按钮它是没有响应的,如何让它有响应呢?接下来我们一起学习GTK的信号与回调函数. GTK采用了信号与回调函数来处理窗口外部传来的事件.消息或信号.当信号发生时,程序自动调用为信号连接的回调函数. 学习应用编程,我们会经常接触到"信号"这个名词.GTK中的"信号"实际上是一种软件中断."中断"在我们生活中经常遇到,譬如,我正在房间里打游戏,突然送快递的来了,把正在玩游戏的我给"中断"了

微信小程序入门学习-- 简易Demo:计算器

简单学习下微信小程序 官网 简易教程 · 小程序 https://mp.weixin.qq.com/debug/wxadoc/dev/ 需要通过开发者工具,来完成小程序创建和代码编辑. 下载安装,运行程序,点击添加项目,弹窗,可以选无AppId,选择程序路径,勾选quick start. app.json 配置文件 wxxml --相当于html wxss--相当于css 在pages文件夹新建文件夹 修改配置app.json 这样系统启动时会运行call文件项目 "pages":[

GTK入门学习:glade的环境搭建

1) Linux环境搭建 在线安装即可,安装命令如下: 测试是否安装成功,在终端敲 glade 即可: 2)windows版本环境搭建 下载一个windows版本,点击此处即可. 双击后一直"下一步"安装即可. 需要注意的是,如果是windows版本的glade设计界面,保存的时候有 2 种格式,Libglade ( gtk2.12前的版本 ), GtkBuilder( 新版的,现在用的是这个版本 ),格式不一样,最终使用的库函数不一样.如图: 版权声明:本文为博主原创文章,未经博主允

汇编入门学习笔记 (八)—— 转移指令

疯狂的暑假学习之  汇编入门学习笔记 (八)--  转移指令 參考: <汇编语言> 王爽 第9章 能够改动ip或者同一时候改动cs和ip的指令统称为转移指令. 8086CPU转移行为分为: 段内转移:仅仅改动ip 段间转移:同一时候改动cs和ip 段内转移按ip改动的范围可分为: 短转移:ip改动范围 -128~127 近转移:ip改动范围 -32768~32767 转移指令分为: 无条件转移指令.如 jmp 条件转移指令 循环指令.如 loop 过程. 中断. 1. offset,nop指令