- 博客(803)
- 资源 (95)
- 问答 (1)
- 收藏
- 关注
原创 UNIX演进与POSIX
在开始学习UNIX系统编程之前,了解UNIX的发展历史和POSIX标准的由来是必要的。这不仅能帮助我们理解为什么现代操作系统会有这样的设计,更能让我们明白跨平台编程的重要性。UNIX的诞生背景和核心理念System V和BSD两大分支的演变POSIX标准的制定过程和核心内容现代UNIX系系统的格局跨平台编程在今天的意义适用读者:对UNIX历史感兴趣的系统编程初学者、需要跨平台开发的工程师。
2026-03-01 22:25:03
12
原创 GTK4 国际化与本地化
国际化(Internationalization,简称i18n)和本地化(Localization,简称l10n)是桌面应用走向全球的必备技能。GTK4通过Gettext提供了完整的国际化支持,结合GLib的本地化API,可以轻松实现多语言应用。Gettext基础:.po文件管理、文本域、翻译流程多语言切换:运行时语言切换、语言检测字符编码处理:UTF-8、文件编码转换RTL语言支持:阿拉伯语、希伯来语等从右到左语言特性说明Gettext标准的i18n工具链多语言支持。
2026-02-16 14:51:40
391
原创 GTK4 打印与PDF生成
打印功能是桌面应用的重要特性,GTK4通过GtkPrintOperation提供了完整的打印解决方案,支持页面布局、打印预览、PDF导出等核心功能。相比GTK3,GTK4的打印API更加清晰,异步支持更完善。GtkPrintOperation基础:打印操作流程、页面设置自定义绘制:在打印页面绘制文本、图片、表格打印预览:实现预览对话框PDF导出:生成PDF文件、打印设置持久化特性说明异步操作所有打印操作都是异步的,不会阻塞主线程Cairo绘图使用Cairo绘制,支持任意图形PDF导出。
2026-02-16 14:48:56
529
原创 GTK4 剪贴板功能实现
剪贴板(Clipboard)是操作系统提供的数据共享机制,允许应用间传输文本、图片、文件等数据。GTK4通过GdkClipboard API简化了剪贴板操作,相比GTK3更符合现代GUI编程习惯。GdkClipboard基础:获取剪贴板对象、读写操作数据格式处理:文本、图片、文件URI等不同类型:内容提供器与异步数据读取实战示例:文本编辑器复制粘贴、图片复制、文件传输// 自定义ContentProvider回调函数char *text;
2026-02-16 14:42:23
435
原创 GTK4 拖放功能实现
拖放(Drag and Drop)是现代GUI应用中常见的交互方式,允许用户通过鼠标拖拽在应用内部或应用之间传输数据。GTK4提供了全新的拖放API,基于事件控制器模型,相比GTK3更加清晰易用。拖放源(Drag Source):使用GtkDragGesture发起拖放操作拖放目标(Drop Target):使用GtkDropTarget接收拖放数据MIME类型处理:文本、图片、文件URI等不同数据类型实战示例:文件拖放、控件间数据传输特性GTK3GTK4API设计信号-based。
2026-02-16 14:40:48
446
原创 GTK4 截图功能实现
在桌面应用开发中,截图功能是一个常见但技术复杂度较高的需求。无论是开发截图工具、录屏软件,还是在应用中添加"分享截图"功能,都需要掌握屏幕捕获的核心技术[1]。GTK4提供了完整的屏幕捕获API,结合GdkPixbuf可以进行灵活的图像处理。本文将系统介绍GTK4中实现截图功能的完整方案,包括全屏截图、窗口截图、区域截图、快捷键绑定以及保存为文件等核心功能[2]。技术栈GDK:GTK4的底层绘图抽象层,提供屏幕捕获APIGdkPixbuf:图像缓冲区,用于像素级操作GdkTexture。
2026-02-16 11:49:14
612
原创 GTK4 系统托盘集成
系统托盘(System Tray)是桌面环境中一个重要的UI组件,允许应用程序在后台运行时通过一个小图标显示在任务栏通知区域。音乐播放器控制(播放/暂停/切歌)即时通讯软件(消息提醒)下载管理器(进度显示)系统监控工具(CPU/内存使用率)在Linux桌面环境中,系统托盘实现经历了多次演进:fill:#333;important;important;fill:none;20032010IndicatorsUnity桌面引入2013KDE Plasma 5采用2020。
2026-02-16 11:26:16
555
原创 GTK4 UI设计
方式1:纯代码创建GtkWidget *button = gtk_button_new_with_label("点击我");方式2:使用.ui文件 + GTK Builder。
2026-02-16 10:46:00
621
原创 GTK4图片查看器项目实战:从零构建专业图像应用
在现代桌面应用开发中,图像查看器是学习GUI编程的经典案例。它涵盖了文件I/O、图像处理、用户交互、状态管理等多个核心主题。本文将通过构建一个功能完整的GTK4图片查看器,展示现代C语言GUI应用的最佳实践。项目特点✅ 基于GTK4最新API,拥抱现代化开发范式✅ CPU+GPU混合架构,兼顾灵活性与性能✅ 完善的用户交互(拖放、快捷键、状态记忆)✅ 清晰的MVC架构,易于扩展维护技术栈(1)MVC分层清晰Model:结构体封装状态数据View:GTK4 Widget控件。
2026-02-15 20:36:03
572
原创 GTK4 记事本项目实战 - 多标签页编辑器实现
GTK4作为Linux桌面应用开发的主流框架,提供了丰富的控件和灵活的架构设计。在实际项目开发中,如何合理运用GTK4的控件组合实现复杂的用户界面,是每个开发者需要掌握的核心技能。本文将通过一个完整的记事本应用项目,深入剖析多标签页编辑器的实现原理。该项目从单文档编辑器演进到支持多标签页的文本编辑器,涵盖了GtkNotebook控件应用、窗口管理、文件操作、状态同步等核心技术。通过源码分析和架构设计讲解,帮助读者掌握GTK4项目实战的关键技能。
2026-02-15 17:24:18
640
原创 GTK4 设计模式剖析
GTK4作为成熟的GUI框架,其设计充分体现了经典设计模式的智慧。本文从架构设计视角深入剖析GTK4中四个核心设计模式的实现机制:观察者模式(信号机制)、组合模式(控件树)、策略模式(布局算法)、工厂模式(控件创建),并从SOLID原则角度分析其设计优劣。阅读前提熟悉GTK4基础开发了解GoF 23种设计模式理解SOLID设计原则技术栈GTK 4.xGObject类型系统C语言面向对象实现观察者模式:信号机制实现松耦合的事件驱动组合模式:控件树支持递归操作和统一接口策略模式。
2026-02-14 20:53:13
266
原创 GTK4 架构设计剖析
架构分层应用层→GTK层→GSK层→平台后端层每层职责清晰,接口定义良好GSK渲染管线场景图模式实现增量更新和批处理渲染渲染节点系统简化了界面描述GPU加速带来流畅的视觉体验事件处理流程平台后端捕获系统事件GDK统一事件格式命中测试和冒泡机制确保事件正确分发平台后端抽象不同平台差异支持Wayland、X11、Win32、macOS等运行时自动选择最佳后端理解GTK4的内部架构,有助于开发者编写更高效、更跨平台兼容的应用程序。
2026-02-14 20:35:46
269
原创 GTK4 GObject深度剖析
在前面的文章中,我们学习了GTK4的自定义控件开发。通过继承GtkWidget,可以创建功能完整的自定义控件。但自定义控件背后的机制是什么?GTK4的控件系统如何实现类型安全、信号通信和属性管理?答案就是GObject。GObject是GTK的对象系统基础面向对象:在C语言中实现类、继承、接口类型系统:动态类型注册和查询信号机制:观察者模式的完整实现属性系统:自动化的getter/setter和通知机制// 枚举属性IDenum {PROP_NAME,N_PROPS// 安装属性。
2026-02-14 19:58:56
255
原创 GTK4 自定义控件开发
在前面的文章中,我们学习了GTK4的布局管理、信号处理、列表视图、多线程编程等核心技术。这些内容涵盖了GTK应用开发的方方面面,但都是基于GTK提供的标准控件。实际开发中,标准控件无法满足所有需求。需要特殊的可视化效果(如自定义图表、进度指示器)实现特定的交互逻辑(如画板、拼图游戏)优化性能(如高效渲染大量数据)GTK4提供了完整的自定义控件框架,开发者可以继承GtkWidget创建自己的控件。标准控件的局限需求场景标准控件问题解决方案数据可视化图表无法灵活显示复杂数据自定义绘图控件。
2026-02-14 18:03:50
336
原创 GTK4 多线程与异步
在前面的文章中,我们学习了列表与树视图的使用。这些控件在展示大量数据时,如果处理不当容易导致界面卡顿。桌面应用中经常需要执行耗时操作,如文件读写、网络请求、复杂数据计算等。如果在主线程中执行这些操作,会导致界面冻结,用户体验极差。GTK4提供了完整的多线程和异步编程支持。
2026-02-14 17:58:43
290
原创 GTK4 CSS样式与主题
在前面的文章中,我们学习了列表与树视图的使用。现在学习GTK应用的另一个重要方面——样式与主题。GTK4支持使用CSS(层叠样式表)来自定义控件外观,这是打造个性化应用界面的关键技能。方案优点缺点内置CSS简单快速功能受限完整主题完全控制开发成本高混合方案平衡灵活度需要测试。
2026-02-14 15:35:28
349
原创 GTK4 列表与树视图
在前面的文章中,我们学习了菜单与工具栏的使用。现在继续学习GTK应用中另一个重要的数据展示组件——列表与树视图。现代桌面应用中经常需要展示大量结构化数据,如文件列表、联系人列表、产品目录等。GTK4提供了专门的控件来处理这些场景。
2026-02-14 15:32:13
529
原创 GTK4 菜单与工具栏
在前面的文章中,我们学习了控件的使用、布局管理、信号处理和对话框交互。现在进入进阶篇,学习GTK应用的高级组件。本文将系统介绍GTK4的菜单系统(GtkPopoverMenuBar)和工具栏(GtkToolbar),这是桌面应用的标准配置。
2026-02-14 15:21:16
386
原创 GTK4 对话框
在前面的文章中,我们学习了控件的使用、布局管理和信号机制。但实际应用中,还需要与用户进行更复杂的交互——对话框(Dialog)。GTK提供了丰富的对话框控件,用于显示消息、获取用户输入、选择文件等操作。本文将系统介绍GTK4的对话框系统。对话框(Dialog)是模态窗口向用户显示重要信息获取用户确认(是/否)收集用户输入(文本、文件路径等)引导用户完成复杂操作(文件选择、颜色选择等)模态窗口:打开对话框时,父窗口被阻塞,用户必须关闭对话框才能继续操作。对于复杂的用户交互,可以基于。
2026-02-14 15:05:11
561
原创 Android GPU编程:OpenGL ES、Vulkan与RenderScript
GPU编程是指利用图形处理器的并行计算能力来执行通用计算或图形渲染任务。与CPU不同,GPU拥有数千个核心,专为处理大量并行计算而设计,特别适合处理图形渲染、矩阵运算、图像处理等任务[2]。在Android平台上,GPU编程主要通过两种API实现:OpenGL ES和Vulkan。OpenGL ES是OpenGL的嵌入式版本,历史悠久且兼容性好;Vulkan是新一代跨平台图形API,提供了更底层的硬件访问和更高的性能。// CPU: 串行处理,少量核心i < n;i++) {// 逐个处理。
2026-02-14 14:56:46
465
原创 GTK4 信号处理
在前面的文章中,我们学习了控件的使用和布局管理。但要让应用真正"动"起来,还需要理解GTK的核心机制——信号(Signal)。GTK采用信号-回调机制处理用户交互和系统事件。这是GTK编程中最核心、最常用的概念。本文目标理解GTK信号机制的工作原理掌握常用信号的使用(clicked、activate、changed等)学会回调函数参数传递技巧了解信号断连和自定义信号基础阅读前提已掌握GTK4基础控件和布局管理了解C语言函数指针基础。
2026-02-14 14:45:02
535
原创 GTK4 布局管理
在《GTK4常用控件入门》中,我们学习了Label、Button、Entry等基础控件的使用。但如果只是简单地把控件添加到窗口,它们会重叠在一起。要让控件按预期排列和显示,就需要理解GTK4的布局管理系统。GTK4采用容器+布局子控件容器:负责管理子控件的位置和尺寸(如GtkBox、GtkGrid)子控件:被容器管理的实际控件(如Label、Button)本文目标理解GTK4布局管理的核心概念掌握GtkBox(盒子布局)和GtkGrid(网格布局)的使用。
2026-02-14 12:59:04
508
原创 GTK4 常用控件
在《GTK4开发环境搭建》中,我们成功运行了第一个 GTK4 窗口程序,认识了 GtkApplication、GtkApplicationWindow 和 GtkLabel 三个基础组件。本文将在此基础上系统学习 GTK4 的常用控件。GTK4 提供了丰富的控件库(GtkWidget),从简单的标签、按钮到复杂的树视图、文本编辑器。掌握这些控件是构建图形界面的基础。本文目标掌握常用基础控件的使用(Label、Button、Entry、Image、ProgressBar)
2026-02-14 12:33:18
547
原创 GTK4 开发环境搭建
GTK(GIMP Toolkit)是一个用C语言编写的跨平台图形工具包,采用LGPL许可证。GTK4是当前最新主版本,引入了新的渲染器和事件处理机制。GPU加速渲染简化的事件处理模型声明式属性绑定支持Wayland和X11。
2026-02-14 11:21:55
595
原创 GTK4 入门到实践:开篇导读
欢迎来到《GTK 开发从入门到实践》系列教程!在这个系列中,我将带领大家从零开始,系统地学习如何使用 C 语言和 GTK 框架开发跨平台的图形用户界面(GUI)应用程序。GTK(GIMP Toolkit)是一个功能强大、自由开源的跨平台 widget 工具包,最初是为 GIMP 图像编辑器开发的,如今已成为 Linux 桌面应用开发的主流选择之一。GNOME 桌面环境及其核心应用(如 Nautilus 文件管理器、Evince 文档查看器等)都基于 GTK 构建。(本系列前期内容)
2026-02-13 23:08:33
692
原创 GPU编程全攻略:从图形渲染到通用计算
与CPU不同,GPU采用SIMD(Single Instruction Multiple Data)架构,拥有大量的并行计算单元。CPU擅长复杂的逻辑控制,而GPU在大规模并行计算上具有绝对优势[2]。// CPU: 串行处理,少量核心但擅长逻辑控制i < n;i++) {if (data[i] > 0) // 复杂条件判断// GPU: 并行处理,数千核心但逻辑控制较弱// 所有数据同时处理,逻辑分支会影响性能。
2026-01-18 21:20:32
960
原创 KWin编译
KDE(KUbuntu)、DDE(Deepin、UOS)、UKUI(银河麒麟、开放麒麟)默认都采用KWin窗口管理器,虽然可通过下面命令安装,本文重点介绍如何从源码安装。
2024-05-10 22:30:28
1160
原创 Android WindowManagerService
本文重点分析WindowManager和WindowManagerService的实现。
2024-05-10 22:17:00
260
原创 Linux模块编译
在使用linux系统的过程中,会使用到各种各样的工具。由于大多数软件都没有图形界面,使用的时候往往都是以命令行的方式去调用的。在实际的使用中,难免会忘记曾经装过什么软件,或者不记得某个软件的名称了,从而导致没有办法使用命令行的方式去调用曾经装过的软件。 因此,对linux系统所使用的软件做一个分析和总结是非常有必要的,特别是对于开发人员来说——凭心而论,大多数使用linux系统的
2023-12-29 19:40:20
1181
2
原创 Android9 CameraSerivce
本文重点分析Android-P的CameraManager、CameraService实现和使用。
2023-11-29 19:35:57
1870
1
原创 Android12模拟器
参考资料[1]基于Android-P对Emulator的使用进行了说明,Android-S情况有变,因此撰写本文进行记录。
2022-06-29 09:30:50
2696
libXau-1.0.7.tar.bz2
2014-12-20
xcb-proto-1.7.1.tar.bz2
2014-12-20
libxcb-1.8.1.tar.bz2
2014-12-20
xtrans-1.2.7.tar.bz2
2014-12-20
kbproto-1.0.6.tar.bz2
2014-12-20
xproto-7.0.23.tar.bz2
2014-12-19
inputproto-2.2.tar.bz2
2014-12-21
MobaXterm_Installer_v20.3.zip
2020-07-28
CSDN个人博客全文检索
2022-05-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅