ℹ️大家好,我是练小杰,今天星期三了,距离除夕又少了一天,新年的钟声就快敲响了😆
本文是有关Linux C/C++编程中的基于GTK+的图形用户界面编程知识点,后续会不断添加相关内容 ~~
回顾:【使用make工具和Makefile实现自动编译】
更多Linux 相关内容请点击👉【Linux专栏】
GTK+简介
GTK+
是一套跨多种平台的开放源码图形用户界面工具包。- GTK+类似于Windows上的MFC和Win32 API、JAVA上的Swing和SWT,是Linux下开发
GUI
应用程序的主流开发工具之一。 - GTK+可以用来进行跨平台GUI应用程序的开发。
- GTK+开发套件基于3个主要的库:
Glib
、Pango
和ATK
GNOME
桌面环境以GTK+为基础,为GNOME编写的程序使用GTK+作为其工具箱。
GTK+的优势
-
跨平台性:GTK+支持多种操作系统,包括Linux、Windows和macOS,使得开发者可以使用相同的代码库开发出可在不同平台上运行的应用程序。
-
开源和免费:GTK+基于LGPL许可证发布,开发者可以自由地使用、修改和分发GTK+,无需支付任何费用。
-
支持多种编程语言绑定:GTK+提供了多种编程语言的绑定,包括C++、Python、JavaScript、Rust等,方便不同背景的开发者使用。
-
丰富的组件和功能:GTK+提供了丰富的GUI组件和功能,包括窗口、按钮、文本框、菜单、对话框等基本组件,以及树形视图、图标视图、进度条等高级组件。
GTK+的应用领域
- 桌面应用程序开发
GTK+是开发Linux和Unix系统下桌面应用程序的主要工具之一,许多流行的开源应用程序,如GIMP、Inkscape、Pidgin等,都是使用GTK+开发的。
- GNOME桌面环境
GNOME是Linux和Unix系统下流行的桌面环境之一,它使用GTK+作为其主要的GUI开发工具包。
- 其他案例
GTK+还被用于开发各种其他类型的应用程序,如嵌入式系统、移动应用程序、Web应用程序等。例如,Firefox浏览器的Linux版本使用GTK+作为其GUI开发工具包。
GTK+ 的编程基础
一个基本的GTK+程序通常由以下几个部分组成:
- 初始化:设置必要的环境变量和初始化
GTK+
库。 - 创建窗口和控件:创建应用程序的主窗口以及必要的控件。
- 信号连接:将控件的信号与处理函数连接起来,以响应用户的操作。
- 事件循环:启动GTK+的事件循环,使得应用程序能够响应用户操作。
- 清理和退出:在程序退出时释放资源并关闭应用程序
部署GTK+编程环境
安装GTK+ 3开发包
部署GTK+编程环境首先要提供
gcc
、g++
、gdb
、make
等编译工具,然后要安装核心的GTK+开发包。
- 安装GTK+ 3开发包,执行命令如下:
sudo apt update
sudo apt install libgtk-3-dev
这里命令是安装最新的
GTK+
开发库及其依赖项。我们也可以从GTK+的官方网站下载源代码并手动编译安装。
- 检查是否安装了GTK+ 3,查看所安装的具体版本。
pkg-config --modversion gtk+-3.0
安装构建工具
为了编译GTK+应用程序,你需要安装C编译器(如
gcc
)或者make
工具。
sudo apt install build-essential
安装其他必要的库和工具
根据项目需求,我们可能需要安装其他库和工具。以下工具的概念后面会细讲!!
pkg-config
用于管理编译时的库依赖
sudo apt install pkg-config
Glade
用于可视化设计GTK+用户界面。
sudo apt install glade
- 调试工具,比如
gdb
,用于调试GTK+应用程序。
sudo apt install gdb
配置环境变量
一般,包管理器会自动处理环境变量配置。但如果我们从源代码安装
GTK+
,需要手动配置PKG_CONFIG_PATH
和LD_LIBRARY_PATH
变量。
示例:可以将这些行添加到你的~/.bashrc
或~/.zshrc
文件中,以便每次打开终端时自动设置。
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
测试GTK+编程
#include <gtk/gtk.h>
int main(int argc,char *argv[])
{
/* 声明GtkWidget构件 */
GtkWidget *window;
GtkWidget *label;
/* 调用GTK初始化函数,这在所有的GTK程序中都要调用*/
gtk_init(&argc,&argv);
/* 创建主窗口*/
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
/* 为该窗口设置标题*/
gtk_window_set_title(GTK_WINDOW(window),"Hello World");
/* 将窗口的destroy信号连接到函数gtk_main_quit
* 当窗口要被销毁时,获得通告,停止主GTK+循环 */
g_signal_connect(window,"destroy",G_CALLBACK(gtk_main_quit),NULL);
/* 创建“Hello, World”标签 */
label = gtk_label_new("Hello, World!");
/* 将标签加入到主窗口 */
gtk_container_add(GTK_CONTAINER(window),label);
/* 显示所有的GtkWidget构件,包括窗口、标签*/
gtk_widget_show_all(window);
/* GTK程序必须有一个gtk_main()函数启动主循环,等待事件发生并响应,直到应用结束 */
gtk_main();
return 0;
}
pkg-config工具
pkg-config
是最为常用的库信息提取工具,通过库提供的一个.pc
文件获得库的各种必要信息的,包括版本信息、编译和连接需要的参数等。GTK+
及其依赖库支持使用pkg-config
工具,通过设置搜索路径来解决寻找库对应的.pc
文件的问题,库的头文件的搜索路径的设置变成了对.pc
文件搜索路径的设置。
- 使用
pkg-config
工具提取库的编译和连接参数的两个基本前提:
- 库本身在安装时必须提供一个相应的
.pc
文件;pkg-config
必须知道要到何处去寻找.pc
文件。
Glade辅助设计界面
Glade简介
- Glade 是一个用于创建和编辑 GTK+ 和 GNOME 应用程序用户界面的开源可视化设计工具。
- 原来
Glade
的设计初衷是将界面设计与应用程序代码分离,界面的修改不会影响到应用程序代码。 - 用Glade设计的用户界面是以
XML
格式的文件保存的(通常以.glade
或.ui
结尾),可以通过GTK+
对象GtkBuilder
被应用程序动态地载入。
主要特点
- 可视化设计
通过拖放组件,开发者可以直观地设计用户界面,而无需手动编写大量的布局和控件代码。
- 支持多种控件
Glade 支持 GTK+ 提供的各种控件,包括窗口、按钮、文本框、树形视图、图标视图等。
- 实时预览
设计界面时,Glade 提供实时预览功能,开发者可以即时看到界面的效果。
- 信号和事件处理
Glade 允许开发者为控件添加信号和事件处理函数,简化了界面与业务逻辑的连接。
- 国际化支持:
Glade 支持界面元素的国际化,可以为不同语言环境设计不同的界面。
- 集成 GTK+ 版本
Glade 支持最新的 GTK+ 版本,包括
GTK+ 3
和GTK+ 4
,确保开发者可以使用最新的界面组件和功能。
Glade安装
- Glade需要
GTK+ 3
支持,所以执行如下命令安装Glade 3
工具
sudo apt update
sudo apt install glade
使用Glade设计图形用户界面
- 启动 Glade,可以在终端中输入命令启动 Glade:
glade
新建一个Glade项目
选择顶层容器
选择显示组件
Glade项目
GTK+结合Glade进行编程
#include <gtk/gtk.h>
int main (int argc, char *argv[])
{
GtkBuilder *builder;
GtkWidget *window;
gtk_init (&argc, &argv);
builder = gtk_builder_new ();
gtk_builder_add_from_file (builder, "hello.glade", NULL);
window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
gtk_builder_connect_signals (builder, NULL);
g_object_unref (G_OBJECT (builder));
gtk_widget_show_all(window);
gtk_main ();
return 0;
}
部署集成开发环境Anjuta
Anjuta简介
Anjuta
是一个为GTK+/GNOME编写的集成开发环境,除了支持C和C++编程外,还支持Java、JavaScrip和Python语言的编程。
Anjuta 的主要特点
- 自身提供强大的源程序编辑功能
- 借用
Glade
工具生成GUI
界面- 内嵌代码级的调试器(调用
GDB
)- 使用标准的Linux构建系统工具
Autotools
- 提供应用程序向导帮助程序员快速创建
GTK+
程序,避免编写重复的代码
Ubuntu系统中安装Anjuta
- 确认系统安装有Glade和GTK+,可用如下命令
sudo apt update
sudo apt-get install anjuta
- 安装完成后,通过终端输入以下命令启动 Anjuta
anjuta &
Anjuta常见问题及解决方法
- 依赖问题:如果在安装过程中遇到依赖错误,确保所有必要的开发库已安装。可以使用
apt
或dnf
安装缺失的依赖包。 - 编译错误:检查编译器和构建系统配置,确保项目设置正确。
- 调试器问题:确保
GDB
已安装,并且Anjuta
的调试配置正确。
Anjuta基本使用(图形界面)
Anjuta初始界面
选择项目类型
设置项目基本信息
设置项目选项
项目结构
项目的目录及文件
启动图形界面文件编辑
调用Glade编辑图形界面文件
设置程序参数
Anjuta创建的应用程序
制作项目
进行编译
今天晚上的内容到这里就结束了😆
ℹ️如果想了解更多,点击主页【练小杰的CSDN】
⚠️若博客里的内容有问题,欢迎指正,我会及时修改!!!
明天再见啦,各位🧍大佬们~~