热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深入探索Linux环境下GTK+3.0的进阶开发(第二部分)

在Linux环境下,深入探讨GTK+3.0的高级开发技巧,涵盖组件定制、事件处理及多线程应用等核心内容,帮助开发者提升应用界面的交互性和性能。

  仅仅创建一个空白窗口是不够的,下面我们为创建的窗口添加一个按钮。

以 Hello,World!为例。

首先创建一个源文件:example2.c 内容如下。

#include  

//点击按钮后被调用的函数,用于输出hello,world
static void print_msg (GtkWidget *button , gpointer data)
{
    printf("Hello , world!\n");
}

static void activate (GtkApplication *app , gpointer data)
{
    GtkWidget *win;
    
    //申明一个按钮
    GtkWidget *button;
    //申明一个盒容器,用于容纳按钮,控制大小
    GtkWidget *button_box;

    win = gtk_application_window_new(app);

    gtk_window_set_title(GTK_WINDOW(win) , "Button test");
    gtk_window_set_default_size(GTK_WINDOW(win) , 200 , 200);

    //创建一个盒容器,并设置水平放置
    button_box = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL); //gtk_orientation_horizontal
    
    //将盒容器包含进window中
    gtk_container_add(GTK_CONTAINER(win) , button_box);

    //创建一个按钮,并带有“My button” 的标签
    button = gtk_button_new_with_label("My button");
    
    //连接信号,让点击按钮后,便调用 print_msg 函数
    g_signal_connect(button , "clicked" , G_CALLBACK( print_msg ) , NULL);
 
 //
将按钮放入盒容器中 gtk_container_add(GTK_CONTAINER(button_box) , button); //显示window及其所有控件 gtk_widget_show_all(win); } int main(int argc , char **argv) { GtkApplication *app; int app_status; app = gtk_application_new("org.gtk.exmple" , 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; }

  编译,运行结果如下:

技术分享

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


推荐阅读
  • 本文介绍了如何在GTK+2中实现透明背景下的小部件叠加绘制,类似于GTK3中的GtkOverlay功能。 ... [详细]
  • 想把一组chara[4096]的数组拷贝到shortb[6][256]中,尝试过用循环移位的方式,还用中间变量shortc[2048]的方式。得出的结论:1.移位方式效率最低2. ... [详细]
  • Android 中的布局方式之线性布局
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • Flutter 核心技术与混合开发模式深入解析
    本文深入探讨了 Flutter 的核心技术,特别是其混合开发模式,包括统一管理模式和三端分离模式,以及混合栈原理。通过对比不同模式的优缺点,帮助开发者选择最适合项目的混合开发策略。 ... [详细]
  • 本文介绍了在 Java 编程中遇到的一个常见错误:对象无法转换为 long 类型,并提供了详细的解决方案。 ... [详细]
  • 编码unicode解决了语言不通的问题.但是.unicode又有一个新问题.由于unicode是万国码.把所有国家的文字都编进去了.这就导致一个unicode占用的空间会很大.原来 ... [详细]
  • 处理Android EditText中数字输入与parseInt方法
    本文探讨了如何在Android应用中从EditText组件安全地获取并解析用户输入的数字,特别是用于设置端口号的情况。通过示例代码和异常处理策略,展示了有效的方法来避免因非法输入导致的应用崩溃。 ... [详细]
  • 函子(Functor)是函数式编程中的一个重要概念,它不仅是一个特殊的容器,还提供了一种优雅的方式来处理值和函数。本文将详细介绍函子的基本概念及其在函数式编程中的应用,包括如何通过函子控制副作用、处理异常以及进行异步操作。 ... [详细]
  • 本文详细介绍了 `org.apache.tinkerpop.gremlin.structure.VertexProperty` 类中的 `key()` 方法,并提供了多个实际应用的代码示例。通过这些示例,读者可以更好地理解该方法在图数据库操作中的具体用途。 ... [详细]
  • Java 中的十进制样式 getZeroDigit()方法,示例 ... [详细]
  • JUnit下的测试和suite
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • 本文介绍了如何通过C#语言调用动态链接库(DLL)中的函数来实现IC卡的基本操作,包括初始化设备、设置密码模式、获取设备状态等,并详细展示了将TextBox中的数据写入IC卡的具体实现方法。 ... [详细]
  • 高级缩放示例.就像谷歌地图一样.它仅缩放图块,但不缩放整个图像.因此,缩放的瓷砖占据了恒定的记忆,并且不会为大型缩放图像调整大小的图像.对于简化的缩放示例lookhere.在Win ... [详细]
author-avatar
海洋无限广
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有