前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Linux 下从头再走 GTK+-3.0 (四)

Linux 下从头再走 GTK+-3.0 (四)

作者头像
RainMark
发布于 2019-09-10 11:38:18
发布于 2019-09-10 11:38:18
1.4K00
代码可运行
举报
文章被收录于专栏:RainMark 的文章RainMark 的文章
运行总次数:0
代码可运行

  实际的应用中,往往有很多个控件, 同样GTK提供了很多种布局方案,Box, Fixed , Table , Grid 等。

接下来试试网格布局 Grid。

我们创建 example4.c ,内容如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <gtk/gtk.h>


static void print_hello(GtkWidget *button , gpointer data);
static void activate(GtkApplication *app , gpointer data);

int main(int argc , char **argv)
{
    GtkApplication *app;
    int app_status;

    app = gtk_application_new("org.rain.gtk" , G_APPLICATION_FLAGS_NONE);
    g_signal_connect(app , "activate" , G_CALLBACK(activate) , NULL);
    app_status = g_application_run(G_APPLICATION(app) , argc , argv);

    g_object_unref(app);

    return app_status;
}

static void print_hello(GtkWidget *button , gpointer data)
{
    printf("Hello,World!\n");
}

static void activate(GtkApplication *app , gpointer data)
{
    GtkWidget *window;
    GtkWidget *grid;
    GtkWidget *button;

    //创建窗口
    window = gtk_application_window_new(app);
    gtk_window_set_title(GTK_WINDOW(window) , "grid test");
//    gtk_window_set_default_size(GTK_WINDOW(window) , 200 , 200);

    //创建网格
    grid = gtk_grid_new();
    
    //添加网格布局到window上
    gtk_container_set_border_width(GTK_CONTAINER(window) , 20);
    gtk_container_add(GTK_CONTAINER(window) , grid);

    //添加按钮一到位置(0,0)处,并设置高,宽均为一个单元
    button = gtk_button_new_with_label("Button1");
    g_signal_connect(button , "clicked" , G_CALLBACK(print_hello) , NULL);
    gtk_grid_attach(GTK_GRID(grid) , button , 0 , 0 , 1 , 1); 

    //添加按钮一到位置(1,0)处,并设置高,宽均为一个单元
    button = gtk_button_new_with_label("Button2");
    g_signal_connect(button , "clicked" , G_CALLBACK(print_hello) , NULL);
    gtk_grid_attach(GTK_GRID(grid) , button , 1 , 0 , 1 , 1);

    //添加按钮一到位置(0,1)处,并设置高为一个单元,宽为两个单元
    button = gtk_button_new_with_label("Exit");
    g_signal_connect_swapped(button , "clicked" , G_CALLBACK(gtk_widget_destroy) , window);
    gtk_grid_attach(GTK_GRID(grid) , button , 2 , 0 , 1 , 1);
    
    //添加按钮一到位置(1,1)处,并设置高为一个单元,宽为两个单元
    button = gtk_button_new_with_label("Exit");
    g_signal_connect_swapped(button , "clicked" , G_CALLBACK(gtk_widget_destroy) , window);
    gtk_grid_attach(GTK_GRID(grid) , button , 1 , 1 , 2 , 1);
    
    gtk_widget_show_all(window);

}

  编译并运行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gcc exampe.c `pkg-config --cflags --libs gtk+-3.0`
./a.out

  运行结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 gtk_grid_attach(GTK_GRID(grid) , button , 0 , 0 , 1 , 1); 

该函数后面四个参数依次代表:第几行,第几列,横向跨度,纵向跨度。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-08-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Linux 下从头再走 GTK+-3.0 (二)
  仅仅创建一个空白窗口是不够的,下面我们为创建的窗口添加一个按钮。 以 Hello,World!为例。 首先创建一个源文件:example2.c 内容如下。 #include <gtk/gtk.h> //点击按钮后被调用的函数,用于输出hello,world static void print_msg (GtkWidget *button , gpointer data) { printf("Hello , world!\n"); } static void activate (GtkApp
RainMark
2019/09/10
1.4K0
Linux 下从头再走 GTK+-3.0 (二)
Linux 下从头再走 GTK+-3.0 (五)
  实践中表明,纯粹利用 gtk 函数来创建 UI 是很繁琐的事,需要编写很多代码。怎样才能快速统一的建立 UI 布局呢?
RainMark
2019/09/10
1.1K0
Linux 下从头再走 GTK+-3.0 (五)
[linux][c/c++]代码片段02
 gcc `pkg-config --cflags gtk+-3.0` -o example-1 example-1.c `pkg-config --libs gtk+-3.0`
landv
2019/11/11
4970
[linux][c/c++]代码片段02
gtk3示例--buttonbox
#include <gtk/gtk.h> static void print_hello (GtkWidget *widget, gpointer data) {     g_print("你按的是确定键\n"); } static void print_cancel (GtkWidget *widget, gpointer data) {     g_print("你按的是取消键\n"); } static void print_help (GtkWidget *wid
py3study
2020/01/14
1K0
Linux 下从头再走 GTK+-3.0 (三)
  之前我们为窗口添加了一个按钮,接下来让这个按钮丰富一点。并给窗口加上图标。 首先创建 example3,c 的源文件。 #include <gtk/gtk.h> static void activate(GtkApplication *app , gpointer data); //从文件中加载一张图片 GdkPixbuf *create_pixbuf(const char *image_name); int main(int argc , char **argv) {
RainMark
2019/09/10
1.2K0
Linux 下从头再走 GTK+-3.0 (三)
Linux 下从头再走 GTK+-3.0 (一)
  原本由于项目需求在 Linux 下学习过一段时间的 GTK+2.0 图形开发,时隔一段时间,想真正深入学习一下 GTK 。
RainMark
2019/09/10
2.3K0
Linux 下从头再走 GTK+-3.0 (一)
GTK 菜单的创建详解
============================================================================== 创建菜单条
RainMark
2019/09/10
1.5K0
C语言写一个GTK的二维码图形界面生成器
其实这个程序并不能自己生成二维码,它只是调用qrencode来生成二维码,并显示出来。
geek2pm
2020/02/15
1.5K0
C语言写一个GTK的二维码图形界面生成器
如何在C语言中进行图形界面编程
在C语言中进行图形界面编程是一项非常有挑战性和有趣的任务。虽然C语言主要用于系统级编程和算法开发,但我们仍然可以使用一些库来实现简单的图形界面。在本文中,我将介绍一种在C语言中进行图形界面编程的方法。
用户10354340
2023/08/13
9810
Gtk 窗口,控件,设置(添加图片等)
让窗体尺寸不可调整,但是好像与全屏使用时有些问题,会自动地调整窗口的大小
RainMark
2019/09/10
2.3K0
在Ubuntu上搭建kindle gtk开发环境
某个角度上说,kindle很类似android,同样的Linux内核,同样的Java用户层。不过kindle更注重简单、节能、稳定。Amazon一向认为,功能过多会分散人们阅读时候的注意力。 Kindle底层的Linux比Android保持了更多的linux兼容性,可以使用GTK或者QT编写程序。QT适合编写大的、独占界面性的应用,比如多看就曾经发布过一个Kindle之上的版本,现在还有很多人用,可惜因为公司战略调整的原因,这个产品被废弃了。GTK及最基本的Linux应用更适合开发一些补丁性的小程序,来补
俺踏月色而来
2018/06/20
1.4K0
Linux桌面程序开发 | Study Python For Gtk3
背景: ​ 使用Linux系统已经有一段时间了,在管理系统是几乎都是使用命令行与内核交流的,使用虽多的就是Shell,其次就是python。这两天突然心血来潮,想到了Linux PC端桌面程序,在我个人的熟悉语言中呢,python比较适合,不过、开发Linux桌面我只是玩玩的。对于开发Linux桌面程序掌握Python的推荐使用Python Gtk3。 ​ 想玩出一个Linux基本桌面程序( 几乎没有业务逻辑 ),看完下面的( 重点是图片 | UI组件 ),大概就有一个底了! ---- 1、入门He
AlicFeng
2018/06/08
5.1K0
Linux 下从头再走 GTK+-3.0 (六)
  在 GTK3 中增加了一个 GtkApplicaton 类,便于我们处理多窗口程序,同时有了 GtkApplication 我们也更容易创建灵活,易用,界面美观的应用程序。
RainMark
2019/09/10
1.8K0
Linux 下从头再走 GTK+-3.0 (六)
Windows 7/Visual Studio2012下使用GTK
其实并没有去刻意的要使用这个库,并且所谓的跨平台的东西配置起来都不是那么的容易的。之所以要用这个东西是因为要编译libgpod的代码,网上的说明文件不少,但是代码迁移到windows还是不少的问题的。
obaby
2023/02/23
7390
PyQt 编程入门(三)
本例讲解计算器的编程。涉及到的内容有:单行文本框、多行文本浏览框和按钮的应用,布局(含垂向箱型布局以及栅格布局)和 事件(含按钮单击,Enter建按下事件)。程序的显示效果如下图。计算的历史信息会保存在文本浏览框中。代码如下:
用户6021899
2019/08/14
8100
PySide——Python图形化界面入门教程(三)
PySide——Python图形化界面入门教程(三)          ——使用内建新号和槽               ——Using Built-In Signals and Slots 上一个教程中,我们学习了如何创建和建立交互widgets,以及将他们布局的两种不同的方法。今天我们继续讨论Python/Qt应用响应用户触发的事件:信号和槽。 当用户执行一个动作——点击按钮,选择组合框的值,在文本框中打字——这个widget就会发出一个信号。这个信号自己什么都不做,它必须和槽连接起来才行。槽是一个接
ascii0x03
2018/04/12
1.9K0
gtk还有人用吗_iperf使用方法
GTK+(GIMP Toolkit)是一套源码以LGPL许可协议分发、跨平台的图形工具包。最初是为GIMP写的,已成为一个功能强大、设计灵活的一个通用图形库,是GNU/Linux下开发图形界面的应用程序的主流开发工具之一。并且,GTK+也有Windows版本和Mac OS X版。 GTK+ 是一种图形用户界面(GUI)工具包。也就是说,它是一个库(或者,实际上是若干个密切相关的库的集合),它支持创建基于 GUI 的应用程序。可以把 GTK+ 想像成一个工具包,从这个工具包中可以找到用来创建 GUI 的许多已经准备好的构造块。差不多已经 10 年过去了。今天,在 GTK+ 的最新稳定版本 —— 2.8 版上(3.0测试中),仍然在进行许多活动,同时,GIMP 无疑仍然是使用 GTK+ 的最著名的程序之一,不过它已经不是惟一的使用 GTK+ 的程序了。已经为 GTK+ 编写了成百上千的应用程序,而且至少有两个主要的桌面环境(Xfce 和 GNOME)用 GTK+ 为用户提供完整的工作环境。 GTK+虽然是用C语言写的,但是您可以使用你熟悉的语言来使用GTK+,因为GTK+已经被绑定到几乎所有流行的语言上,如:C++,PHP, Guile,Perl, Python, TOM, Ada95, Objective C, Free Pascal, and Eiffel。
全栈程序员站长
2022/11/01
1.3K0
gtk还有人用吗_iperf使用方法
Linux C编程——为eog image viewer增加坐标和像素颜色显示功能
好用的看图工具对做图片相关的算法验证很有帮助。但常常工具并没有我们需要的功能。今天我就分享一个工作中遇到的例子。
ExASIC
2020/07/15
1.5K0
Linux C编程——为eog image viewer增加坐标和像素颜色显示功能
全栈之前端 | 6.CSS3基础知识之网页几种布局方法学习(1)
描述: 前面相信大家已经跟着【WeiyiGeek】作者一起学习了CSS基础知识了,并且了解了盒子模型、以及元素的定位浮动方面的知识。现在我们在此基础上继续深入学习CSS布局,它是学习CSS之路上一个重点,是在进行前端开发时常常使用到的,所以说我们需要认真学习,若有不懂的地方可以在文章末尾,以及作者交流群【在公众号回复微信交流群】进行留言交流。
全栈工程师修炼指南
2023/10/31
6470
全栈之前端 | 6.CSS3基础知识之网页几种布局方法学习(1)
事件与信号
所有的应用都是事件驱动的。事件大部分都是由用户的行为产生的,当然也有其他的事件产生方式,比如网络的连接,窗口管理器或者定时器等。调用应用的exec_()方法时,应用会进入主循环,主循环会监听和分发事件。
小飞侠xp
2018/12/24
1.2K0
相关推荐
Linux 下从头再走 GTK+-3.0 (二)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文