[代码实例][gtk+]使用builder创建UI

47、基于 GTK+ 的 GNOME 编程入门 本文详细介绍了基于 GTK+ 和 GNOME 库进行图形用户界面(GUI)编程的基础知识和技术。内容涵盖 GNOME 窗口、菜单和对话框的创建方法,包括使用 GnomeUIInfo 结构体和 GNOME 宏简化菜单开发,以及如何创建和处理模态与非模态对话框。通过示例代码和操作流程,帮助开发者快速入门并构建功能丰富的 GNOME 应用程序。 阅读详情

builder.ui

<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 -->

<interface>
  <requires lib="gtk+" version="3.12"/>
  <object id="window" class="GtkWindow">
    <property name="visible">True</property>
    <property name="title">Grid</property>
    <property name="border-width">10</property>
    <child>
      <object id="grid" class="GtkGrid">
        <property name="visible">True</property>
        <child>
          <object id="button1" class="GtkButton">
            <property name="visible">True</property>
            <property name="label">Button 1</property>
          </object>
          <packing>
            <property name="left-attach">0</property>
            <property name="top-attach">0</property>
          </packing>
        </child>
        <child>
          <object id="button2" class="GtkButton">
            <property name="visible">True</property>
            <property name="label">Button 2</property>
          </object>
          <packing>
            <property name="left-attach">1</property>
            <property name="top-attach">0</property>
          </packing>
        </child>
        <child>
          <object id="quit" class="GtkButton">
            <property name="visible">True</property>
            <property name="label">Quit</property>
          </object>
          <packing>
            <property name="left-attach">0</property>
            <property name="top-attach">1</property>
            <property name="width">2</property>
          </packing>
        </child>
      </object>
      <packing>
      </packing>
    </child>
  </object>
</interface>

main.c

#include <gtk/gtk.h>

static void print_hello(GtkWidget * widget, gpointer data);

int main(int argc, char * argv[])
{
    GtkBuilder *builder;
    GObject *window;
    GObject *button;

    gtk_init (&argc, &argv);

    /* Construct a GtkBuilder instance and load our UI description */
    builder = gtk_builder_new();
    gtk_builder_add_from_file(builder, "builder.ui", NULL);

    /* Connect signal handlers to the constructed widgets. */
    window = gtk_builder_get_object (builder, "window");
    g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);

    button = gtk_builder_get_object (builder, "button1");
    g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL);

    button = gtk_builder_get_object (builder, "button2");
    g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL);

    button = gtk_builder_get_object (builder, "quit");
    g_signal_connect (button, "clicked", G_CALLBACK (gtk_main_quit), NULL);

    gtk_main ();

    return 0;
}

static void print_hello(GtkWidget * widget, gpointer data)
{
    g_print ("Hello World\n");
}

Makefile:

main: main.c
    gcc main.c -o main `pkg-config --cflags --libs gtk+-3.0`
47、基于GTK+的GNOME编程指南 本文详细介绍了基于GTK+和GNOME库进行GUI应用程序开发的核心内容,涵盖窗口、菜单和对话框的创建与管理,包括模态与非模态对话框的交互处理。通过示例代码讲解了GNOME库对GTK+的扩展功能,并提供了编程流程、常见问题解决办法及代码优化建议,帮助开发者构建功能丰富、用户友好的桌面应用。 阅读详情

相关推荐

Neo4j-KGBuilder:Neo4j+springboot+vue+d3.js知识图谱构建和可视化

初衷 这是一个知识图谱构建工具,最开始是对产品和领导为了做ppt临时要求配合做图谱展示的不厌其烦,做着做着就抽出一个目前看着还算通用的小工具,知识图谱可视化,仅供做知识图谱的小伙伴参考 技术栈 小工具是前台是基于vue + d3.js ,后台是springboot配合Neo4j. 演示 demo地址:. 实现的基本功能: 新增节点,添加连线,快速添加节点和关系 节点的颜色和大小可修改 节点和关系的编辑,删除 导出成图片 csv导入 导出csv 添加图片和富文本 节点之间多个关系 增加直接执行cypher功能 后续优化: 新建单节点,节点的位置能指定(或者和鼠标点下的位置一致) over 2018-11-16 做出的图谱能够导出成图片 over 2018-11-16 支持导入功能,同时支持导出关系和节点 over 2018-11-17 输入一段文本,通过自然语言等手段,抽出实体和关系,编辑后

探索GTK和Rust的魅力:一个高效、跨平台的GUI开发神器

探索GTK和Rust的魅力:一个高效、跨平台的GUI开发神器 gtkDEPRECATED, use https://github.com/gtk-rs/gtk3-rs repository instead!项目地址:https://gitcode.com/gh_mirrors/gtk/gtk 在现代软件开发中,图形用户界面(GUI)是不可或缺的一部分。如果你正在寻找一个强大且易于使用的工具包来创...

gitblog_00041的博客 1277

gtk3+ 比Gtk2-1.247 界面更加漂亮

gtk3+ 比Gtk2-1.247 windows界面更加漂亮

推荐开源项目:Layan-GTK-Theme - 打造现代化的Material Design桌面体验

![Layan Theme](https://images.pling.com/img/00/00/32/24/44/1309214/7a86d212835c855e62ca9725c0031e6202ae.jpg) ## 一、项目介绍 Layan是一款专为GTK 3和GTK 2设计的扁平化Material Design风格的主题,同时也支持Gnome-Shell。它不仅适用于Gnome,Bu

gitblog_00100的博客 638

Neo4j-KGBuilder-master.rar

springboot集成neo4j 成品代码!拿来可以直接使用,功能包括上传下载csv文件,节点的crud,vue+d3图谱数据库可视化!

云架构师进阶【SAP迁移方案设计】手把手教您玩转SAP上云

一,项目背景介绍 今天又接到了北京某制造企业SAP迁移的场景,先简单说明一下,好好的SAP在运行着为什么要做迁移这类大动作呢?众所周知SAP的ERP是企业的绝对核心系统,尤其对于制造业更是核心的系统,这样一套核心系统还是生产环境在迁移的过程中必然要面临比较大的挑战,如果有任何问题的话,都会对企业的绩效产生很大的影响。 经过跟客户沟通才得知,客户的SAP原来的系统是托管在运营商机房里,近期感染了勒索病毒,导致业务宕机,SAP应用服务器无法启动,仅有的数据库服务器可以运行。基于上述情况公司领导当机立断决定迅

bdsh818的博客 4220

高效智能抢票系统完整指南:面向技术爱好者的自动化票务解决方案

在现代票务市场中,热门演出门票往往在开售后几秒内售罄,传统手动抢票方式面临着网络延迟、操作失误和反应速度慢等挑战。大麦网自动化抢票系统通过智能自动化技术,为技术爱好者提供了一套完整的解决方案,实现毫秒级响应和高成功率抢票体验。本文将深入解析该系统的技术架构、配置方法和实战应用。 ## 技术架构深度解析:双端协同的自动化引擎 本系统采用模块化设计,支持Web端和移动端双平台自动化操作,核心基于S

gitblog_00022的博客 524

【短路计算篇】短路电流计算详解:从理论到实践

短路电流是指在正常电路中电势不同的两点之间发生阻抗极小的故障而引起的过电流。短路时电流强度很大,可能达到额定电流的10-15倍,大容量电力系统中短路电流可达数万安。简单比喻:短路就像水管突然爆裂,水流瞬间增大很多倍,对管道系统造成巨大冲击。短路电流计算是电气系统设计中的基础性工作,关系到整个系统的安全运行。通过本文介绍的各种计算方法,工程师可以根据具体情况选择合适的方法进行准确计算。

2301_81299416的博客 3962

Rows高级用法:如何构建自定义字段类型和复杂数据处理管道

Rows是一款强大的Python表格数据处理库,无论你的数据是CSV、Excel、HTML、PDF还是数据库格式,Rows都能提供统一、美观的接口。本文将深入探讨Rows的高级功能,教你如何构建自定义字段类型和复杂数据处理管道,让你的数据工作流程更加高效和灵活。🚀 ## 为什么选择Rows进行表格数据处理? Rows的核心优势在于其智能类型检测和统一的API接口。无论数据源是什么格式,Row

gitblog_01149的博客 372

思科模拟器Cisco Packet Tracer交换机的管理配置

一、交换机的管理方式:带内管理和带外管理 通过交换机的 Console 端口管理交换机属于带外管理;这种管理方式不占用交换机的网络端口,第一次配置交换机必须利用 Console 端口进行配置。 通过 Telnet、拨号等方式属于带内管理。 二、控制台配置思科交换机 1.新建拓扑图 新建拓扑,选择console线连接交换机和PC,一端接交换机的console口,一端接PC的RS 232 口(...

qq_37992321的博客 2万+

《计算机科学概论(第13版)》5-12章

定序是按给定语句的顺序应用每个算法步骤。(primitive):建立一组定义明确的构建块,利用它们来构造和执行算法的表示。可以消除歧义,不会引起误解,就像咱们传统的自然语言(用英语来沟通交流)。(programming language):原语的集合以及说明如何组合这些原语来表示比较复杂的想法的规则集合。用程序设计语言描述的算法可以在计算机上执行。每个原语都有自己的语法和语义,语法指的是原语的符号表示,语义是指该原语的含义。伪代码:用户开发过程中非正式表达想法的符号系统。

输入知识,消化知识,输出知识,分享知识,教人让我学习更好,业精于勤荒于嬉,行成于思毁于随 1036

Glade3 GTK+使用中出现到问题及解决方法

由于项目需要,小弟最近在学习使用Glade3和GTK+开发UI界面, 学习中遇到里一些错误或者问题,现整理一下,希望可以帮助日后初学Glade和GTK+的小伙伴们 环境:ubuntu 工具:glade3 编译命令: gcc -Wall -g -o test3 test3.c `pkg-config --cflags --libs gtk+-3.0` 问题1: 添加notebook控件后...

weixin_30617737的博客 365

Qt Creator配置MSVC编译环境、调试环境

获取和安装:cdb.exe 在 Debugging tools for Windows 中,而现在已经不单独提供下载,只在Windows SDK 或者Windows Driver Kit里面包含 所以需要下载微软的调试工具,最少需要下载 Windows SDK。在windows上开发,一般使用Qt Creator自带mingw编译器,编译和调试都很方便,安装Qt时勾选后,自动配置完毕。但是有时候我们需要使用MSVC的编译器,这个时候我们没法直接使用,需要配置环境才能使用,以下是配置方案。

希望能帮助大家,希望大家多多支持,你们的支持是我前进的动力。 6986

GTK+3自定义标题栏GtkHeaderBar实例-在标题栏上添加图标和菜单(要求GTK+3.10版本以上) 通过xml文件(builder.ui)进行界面布局

【代码】GTK+3自定义标题栏GtkHeaderBar实例(GTK+3.10版本以上)

yuan722723的博客 702

anaconda navigator 卡在loading application界面一直没有反应解决办法

在打开anaconda navigator 程序的时候,遇到了2个问题。第一个问题:打开的时候弹出提示:There is an instance of Anaconda Navigator already running.第二个问题:程序一直卡在loading application界面一直没有反应。以下是我的解决办法,有效果。

猿小白的博客 4384

2024美团秋招硬件开发笔试真题及答案解析

在 Linux 内核的网络设备驱动中,数据链路层的功能通常由网络协议栈的低层(如以太网驱动)实现,而不是作为网络设备驱动的一个独立层次。在 FreeRTOS 中,任务通知(Task Notifications)是一种轻量级的事件传递机制,用于在任务之间或任务与中断之间传递信号。小美正在开发一个简单的密码生成器,其中一个功能是将输入的字符串中的所有字母按字母顺序循环前移一位(即 'a' 变为 'z','B' 变为 'A',以此类推)。它包含了网络设备的各种参数和方法,用于管理网络设备的初始化、配置和操作。

XU157303764的博客 1675

微信聊天记录导出 PDF 和 Word 无需代码:WeChatMsg 完整实操记录

WeChatMsg 是一款微信聊天记录导出工具:读取电脑端微信的本地数据,把记录转成 HTML、Word、PDF、CSV 文件,还能生成年度聊天报告。全程在本机处理,不上传数据,单次导出约 20 分钟。 [![WeChatMsg 微信聊天记录导出年度报告数据可视化示例页](https://raw.gitcode.com/GitHub_Trending/we/WeChatMsg/raw/5d6d0

gitblog_01422的博客 375

AI + 药物临床试验研发赛道

研究日期:2026-07-09 | 研究主题:AI + 药物临床试验研发赛道 | 聚焦岗位:Agent 平台架构师 / AI 工程架构师。

AI天才研究院 145

使用GtkBuilder设计Gtk+界面

linuxeden管理团队c-ariesGtk+使用glade进行界面设计能有效地加快项目进度和提高程序的可维护性。自从gtk2.12,Gtk+已经内建了GtkBuilder,用以代替使用glade编写的程序所依赖的libglade库文件。下面介绍如何使用GtkBuilder写一个最基本的界面。1. 使用glade设计Gtk+界面,保存为glade文件$ ls

aluminiumfoil的专栏 1028

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

在 Borland C++BuilderX for Windows 中进行 GTK+ 编程

在 Borland C++BuilderX for Windows 中进行 GTK+ 编程 BCBX 在经历了一系列失败的“跨平台”努力后,独立工具软件商 Borland 的最后希望寄托在了 C++BuilderX,这个工业级的重型 C++ 开发环境上。C++BuilderX 与先前的 B...

chengtiqin4876的博客 419

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Golang Gtk+3教程:GtkBuilder使用XML构建UI

在这节我将介绍GtkBuilder,其使我们可以从一个描述界面的xml文件构建UI。而这个文件我们可以使用Glade生成,这会极大的方便我们编辑用户界面。这节我们会使用到这么一个XML文件,名字为Builder.ui(可以在本文后面看到,请创建并放在项目下)。习惯上,我们使用.ui作为扩展名。 示例: package main import ( "github.com/gotk3/got...

weixin_30949361的博客 582

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

◆C语言函数库简介系列◆1.1 GTK+ zz

http://post.baidu.com/f?kz=102395749                assiss  ◆C语言函数库简介系列◆1.1 GTK+  

ak47mig的网志(自家用,谢绝无聊斗鸡) 1332

【亲测免费】 GNOME Builder 开源项目安装与使用指南

GNOME Builder 开源项目安装与使用指南 项目概述 GNOME Builder 是由 GNOME 社区开发的一款集成开发环境(IDE),专为GNOME生态的应用程序设计。它简化了GNOME应用的创建、构建和调试流程。本指南将深入剖析其内部结构,帮助开发者快速理解和上手使用此工具。 1. 项目目录结构及介绍 GNOME Builder 的源代码仓库遵循GNOME项目的标准结构,主要目录如...

gitblog_00417的博客 1357
上一篇: [代码实例][gtk+]Grid布局
下一篇: [代码实例][gtk+]画布
cloudblaze
博客等级 码龄17年 81粉丝 125原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值