Gtk+-3.0实例4.使用GtkGrid和GtkTable制作简单计算器界面

GTK+-3.0学习笔记(三)——Packing GTK+-3.0学习笔记(二)——Packing 参考自官方文档 本文基于前两篇文章,主要介绍GTK中的部件打包方式。 所有的打包方式见这篇文章 本文主要使用一个示例代码对Grid方式进行讲解 创建一个grid容器:gtk_grid_new() 为窗口增加子容器:gtk_container_add(GTK_CONTAINER(window), grid); 为Grid容器增加部件:gtk_grid_attach(GTK_GRID(grid), button, left, top, width, hight) 阅读详情

Gtk+-3.0实例4.使用GtkGrid和GtkTable制作简单计算器界面

1.代码说明

  • GtkTable的创建与使用
  • GtkGrid的创建与使用
  • 主要函数说明
//Adds a widget to the grid.
void
gtk_grid_attach (GtkGrid *grid,
                 GtkWidget *child,
                 gint left,
                 gint top,
                 gint width,
                 gint height);
  • 参数说明
    子构件child的位置由left 和 top的值决定,每个子构件,这里主要指网格中的每个按钮所占网格 “cells” 的数量由width 和 height决定 .
    grid:a GtkGrid 网格部件
    child:the widget to add 网格中要添加的小部件
    left:the column number to attach the left side of child to 小部件左侧关联的列号
    top:the row number to attach the top side of child to 小部件顶部关联的行号
    width:the number of columns that child will span 小部件所占列的数量
    height:the number of rows that child will span 小部件所占行的数量

2.源码如下

//buttons with table/grid in window (calculator.c)
#include <gtk/gtk.h>

int main (int argc,char *argv[])
{
	GtkWidget *window;
	//GtkWidget *table;
	GtkWidget *grid;
	GtkWidget *button;

	gchar *values[16]={"7","8","9","/",
					   "4","5","6","*",
					   "1","2","3","-",
					   "0",".","=","+",};
	
	gtk_init (&argc, &argv);
	
	window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
	//gtk_window_set_title (GTK_WINDOW (window), "Calculator in GtkTable");
	gtk_window_set_title (GTK_WINDOW (window), "Calculator in GtkGrid");
	gtk_window_set_default_size (GTK_WINDOW(window),260,180);
	gtk_container_set_border_width (GTK_CONTAINER (window), 5);
	gtk_window_set_position (GTK_WINDOW (window),GTK_WIN_POS_CENTER_ALWAYS);

	//从gtk3.4开始,已放弃使用GtkTable,建议使用GtkGrid,但该小部件目前仍能使用
	//table=gtk_table_new (4,4,TRUE);
	//gtk_table_set_row_spacing (GTK_TABLE(table),4,2);
	//gtk_table_set_col_spacing (GTK_TABLE(table),4,2);

	grid=gtk_grid_new ();
	gtk_grid_set_row_spacing (GTK_GRID(grid),2);
	gtk_grid_set_column_spacing (GTK_GRID(grid),2);

	gint pos=0;
	for(gint i=0;i<4;i++)
		for(gint j=0;j<4;j++)
		{
			button=gtk_button_new_with_label(values[pos]);
			gtk_widget_set_hexpand (button, TRUE);
			gtk_widget_set_vexpand (button, TRUE);
			//gtk_table_attach_defaults (GTK_TABLE(table),button,j,j+1,i,i+1);
			gtk_grid_attach(GTK_GRID(grid),button,i,j,1,1);
			pos++;
		}
	
	g_signal_connect (G_OBJECT (window), "destroy",
	                  G_CALLBACK (gtk_main_quit), G_OBJECT(window));
	
	//gtk_container_add (GTK_CONTAINER (window), table);
	gtk_container_add (GTK_CONTAINER (window), grid);
	gtk_widget_show_all(window);
	gtk_main ();
	return 0;
}

3.运行结果

在这里插入图片描述
在这里插入图片描述

GTK3.0高级控件(万字详解+源码) 3.4.1 GTK3.0的GtkTreeView:树视图 3.4.1 GTK3.0的GtkListBox:列表框 3.4.1 GTK3.0的GtkFlowBox:流动框 3.4.1 GTK3.0的GtkIconView:图标视图 3.4.1 GTK3.0的GtkSpinButton:旋转按钮(数值输入) 3.4.1 GTK3.0的GtkSpinner:旋转器(加载动画) 3.4.1 GTK3.0的GtkFrame:框架 3.4.1 GTK3.0的GtkAspectFrame:宽高比框架 3.4.1 GTK3 阅读详情

相关推荐

gtk3.0入门看这一篇就够(十万字总结+源代码)

GTK(GIMP Toolkit)是一个用于创建图形用户界面(GUI)的跨平台工具包,主要用于Linux环境。GTK 3.0 是该工具包的一个版本,提供了一系列用于构建现代化、用户友好的应用程序界面的功能。

啊渊的专栏 3740

Linux 图形化编程GTK3.0 快速入门之布局

水平布局容器:水平布局容器的创建:homogeneous:容器内控件是否大小一致( gboolean 取值为TRUE 或 FALSE )spacing:控件之间的间隔( 以像素点为单位 ),gint相当于 C语言的int返回值:水平布局控件指针容器添加添加控件:container:容纳控件的容器widget:要添加的控件显示容器上所有控件widget:需要显示的控件。

zhouzhiwengang的专栏 1961

GTK4 UI设计

本文介绍GTK4中使用Glade设计.ui文件并通过GTK Builder加载的界面开发方式。相比纯代码创建,该方法实现可视化设计、界面与逻辑分离,提升开发效率与可维护性。文章详解.ui文件结构、常用属性及实际应用案例,强调推荐使用.ui后缀以确保兼容性,并指出其在团队协作、原型开发和主题切换中的优势。

OneSea 1050

gtk3基础知识的学习(C语言)

gtk3基础知识学习笔记(C语言版) 使用环境:visual studio2019 + windows10

weixin_48842132的博客 4452

GTK+3.0详细的说明文档

学习GTK3.0必备的资料,这个说明文档很好使用的

iOS 取证窍门:为什么要先从 Recovery 恢复模式开始?

未记录的 DFU 代表“设备固件升级”。与专为普通用户设计的恢复模式不同,DFU 模式从来都不是为公众设计的。Apple 知识库中的任何地方都没有关于 DFU 的文档。进入 DFU 的方法主要是通过按下、按住和释放按钮的复杂操作序列,并具有精确的时间限制。在多个步骤中的任何一个步骤中,如果时间错误,都会导致重新启动设备,而不是将其切换到 DFU。另外,设备屏幕上也没有 DFU 模式的指示。如果设备成功切换到 DFU,显示屏将保持黑色。即使对于专家来说,进入 DFU 模式也可能很困难。恢复模式是最容易解释的。

2302_82041293的博客 1198

gtk+ Windows下的安装配置

gtk在win11下的配置

m0_47015507的博客 3792

【东华大学oj】找到最大数(一维数组->中等)

一天,老师布置了一个作业,要求对一串数字各不相同的数字串进行排序,大的在前,小的在后。接着,我从数字串中的第二个数字开始往后找,找到最大的一个,然后与第二个数字交换,这样的话我就能够确定排序后数字串中的第二个数字;明明研究发现,他的这个想法中最重要的一环就是在一串数字中找到最大的那个,然后与第一个数字交换,可是明明毕竟刚刚开始学习程序设计不久,无法写出较复杂的程序,所以明明想让你这位程序设计专家帮他的忙,帮助他把这段核心程序写出来,然后明明只需模仿着写就可以了。时间限制: 1S类别: 一维数组->中等。

的博客 525

GTK3.x/4.x简单教程(一)

MSYS2环境下安装Gtk+-4.0和Glade

CS_Jack的专栏 1316

【数据清洗】数据清洗流程及经验

预处理阶段 预处理阶段主要做两件事情: 一是将数据导入处理工具。 二是看数据。包含两个部分:一是看元数据,包括字段解释、数据来源、代码表等等一切描述数据的信息;二是抽取一部分数据,对数据本身有一个直观的了解,并且初步发现一些问题,为之后的处理做准备。 第一步:缺失值清洗 四个步骤: 1、确定缺失值范围:对每个字段都计算其缺失值比例,然后按照缺失比例和字段重要性,分别制定策略。 2、去除不需要的...

JoJo93723的博客 6497

HarmonyOS NEXT 开发者预览版Beta招募应知测试

本次HarmonyOS NEXT 开发者预览版 Beta 招募活动为开发者预览版尝鲜升级,主要供开发者进行应用调测使用,除部分系统应用外,其他所有应用将被清除,因此在进行HarmonyOS NEXT 开发者预览版升级前,需进行数据备份。通过应知测试,并提交了参加HarmonyOS NEXT 开发者预览版招募 Beta 活动的报名信息,就会立刻审核通过并且收到新版本。手机在参加HarmonyOS NEXT 开发者预览版 Beta 招募活动前,需要对应机型升级到招募要求对应的基线版本,并预留内存空间。

长久公子的博客 8649

gtk_table_attch与gtk_grid_attach的区别

gtk_table_attch与gtk_grid_attach的区别

weixin_42145772的博客 523

向华为学习——解读华为战略规划SP与业务计划BP流程【附全文阅读】

该方案针对大中型企业高管及战略团队,系统拆解华为SP(4-9月中长期规划)与BP(10-12月年度执行)双轨体系,形成"战略制定-业务设计-资源配置-绩效解码"闭环。SP侧重市场趋势分析、业务优先级与资源分配,BP细化KPI、预算及行动计划。通过价值树、战略解码等工具实现战略到部门/个人的目标分解,强化跨部门协同与过程管控。配套17份华为实战资料(包括战略管理、流程优化、销售组织建设等核心方法论),助力企业建立规范的战略执行体系,实现资源优化与绩效落地。

cdfunlove的博客 770

GTK+2.0/3.0/4.0学习资料

GTK+2.0/3.0/4.0学习资料

CS_Jack的专栏 1121

IEC104协议学习专栏内容规划

IEC104协议的编程学习

sixtome 1110

《网络安全自学教程》- SQL注入之报错注入原理+步骤+实战操作

这篇文章为大家解析报错注入的实现原理,结合实战案例讲解报错注入的使用步骤。

wangyuxiang946的博客 1万+

GTK3.0学习第一天---环境配置

配置安装gcc/g++/gdb/make 等基本编程工具 sudo apt-get install build-essential 安装GTK/GNOME开发环境 sudo apt-get install gnome-devel gnome-devel-docs 安装基于GTK的界面GTK是开发Gnome窗口的c/c++语言图形库 sudo apt-get install glade libg

小坤的博客 1446

微信小程序- 云开发上传并部署云函数时报错ResourceNotFound.Function, 未找到函数版本,请创建后再试。(小程序上传部署云函数提示错误,开发控制台中的云函数没有删除,详细排查)

微信小程序——云函数上传失败,微信小程序——解决上传并部署云函数时报错ResourceNotFound.Function, 未找到函数版本,请创建后再试。微信小程序上传云函数失败,微信小程序云开发|Error: ResourceNotFound.FunctionName, FunctionName 指定的资源不存在。微信云开发报错(Error: ResourceNotFound.FunctionName,微信小程序云函数报错,上传云函数 sum 失败 Error:,上传部署我们的云函数 2. 报错 错误信息

🏆 前端领域优质创作者 4316

gtk-3.0学习笔记3-布局始

创建应用程序时,您需要在窗口中放置多个窗口小部件。当您要将多个窗口小部件放入窗口时,控制每个窗口小部件的位置和大小变得非常重要。这是包装进来的地方。 GTK +带有各种各样的布局容器 ,其目的是控制添加到其中的子窗口小部件的布局。#include <gtk/gtk.h>static void print_hello (GtkWidget *widget, gpointer

柠檬说葡萄你好酸 675

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

GtkGrid gtk_grid_attach

void gtk_grid_attach (GtkGrid *grid, GtkWidget *child, gint left, // 左,相当于第一列,从0开始,跟数组一样 gint top, // 上,相当于第一行,从0开始 gint width, gint height); // demo.c #include <gtk/

weixin_44374594的博客 706

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

c++/C语言之内联函数

内联函数 在类声明内定义内联函数 内联函数 在C++中,用户可以创建实际上不调用的短函数,他们的代码在每次调用的程序行里得到扩展。这个过程类似于使用类似函数的宏。为使一个函数在程序行进行代码扩展而不被调用,只要在函数前面加上关键字inline即可。   例如,在下面的程序,函数max()在行内扩展而不被调用: #include <iostream> using namespace std; inline int max(int a, int b) { return a>b?a:b;

zhang2039的博客 561

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

使用gtk库时需要注意的地方

1、#include ,很多介绍gtk编程的教科书中都写成#include ,这是因为通过yum安装的gtk.h位于/usr/include/gtk-2.0/gtk/gtk.h这个位置,而不是/usr/include/gtk/gtk.h.所以,这一步一定要谨慎。 2、通过gcc来编译程序; 输入:gcc -o test test.c `pkg-config --cflags --libs

dai的专栏 656

linux下使用C语言进行GTK桌面程序开发

简略的总结了linux环境下GTK的安装步骤和GTK使用方法的相关资料,并在最后贴上了一个使用demo

我要出家当道士 4053

GTK 菜单的创建详解

1 定义 1.1 菜单由菜单条和菜单项组成,它们的定义如下所示: 菜单项(GtkMenuItem):添加到菜单条或下拉菜单中构件 顶层菜单项:添加到菜单条上的菜单项称为顶层菜单项 下拉菜单(GtkMenu):当鼠标移动到某个菜单项后显示出来的菜单(GtkMenu)称为下拉菜单。它通常用来作为放置菜单项的容器 1.2 菜单的创建 创建一个菜单条 往菜单条上添加菜单项(顶层菜...

weixin_38166557的博客 296

GTK3的配置

超级详细的在windows环境下使用Visual Studio2019引入gtk3库教程

weixin_48842132的博客 3187

gtk学习总结:GTK从入门到放弃,三天包教包会

今天花了一些时间复习之前学习过的gtk,感觉东西光学不用忘得好快啊,在这做个之前学过的内容的备份,希望对大家有用,也希望大家不要从入门到放弃。文中有些代码例子可能来自《GTK从入门到精通》吧,我不记得了,或者叫《GTK中文教程》,忘记了,总之,这是一个学习笔记,希望不触及任何人的利益,起到共享学习之用。 目录 编译方法 编译脚本 01.一个简单的按钮 02.两个按钮 03.vbox:一...

RToax 4万+
上一篇: Gtk+-3.0实例3.在fixed小部件中移动buttons
下一篇: Gtk+-3.0实例5.Signals/Callback/Data的使用说明
CS_Jack
博客等级 码龄16年 3粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值