[STM32MP2] 【STM32MP257学习笔记】7.通过Glade创建窗口程序

[复制链接]
258|0
yuyy1989 发表于 2025-9-27 17:11 | 显示全部楼层 |阅读模式
Glade是一个用于创建GTK图形用户界面的用户界面构建器。它允许开发者通过可视化方式设计和布局GUI元素,而不必手动编写代码。Glade生成XML格式的描述文件,描述了用户界面的结构和属性。然后,这个XML文件可以由程序加载和解释,从而创建用户界面。
在Ubuntu中安装Glade
  1. sudo apt-get install glade libgtk-3-dev
安装完成后可以在应用列表中看到这样的图标
屏幕截图 2025-09-27 125511.png
打开后界面是这样的
屏幕截图 2025-09-27 125915.png
先点击左上角的新建按钮,界面会变成这样
屏幕截图 2025-09-27 130046.png
先创建一个窗口,在右边修改ID
屏幕截图 2025-09-27 132027.png
切换到signals,在destroy这里填上窗口关闭时要调用的方法名称
注意:这里并不会真正的绑定到指定函数还需要在代码中绑定,所以也可以不填,这里只是帮忙了解对应的控件都有哪些方法可用
屏幕截图 2025-09-27 132136.png
接下来添加一个输入框和按钮,来实现一个点击按钮后将输入框中的文字输出到控制台的窗口应用
屏幕截图 2025-09-27 163559.png
代码实现
  1. #include <gtk/gtk.h>
  2. GtkWidget *entry;
  3. void on_btn_clicked(GtkWidget *widget,gpointer data)
  4. {
  5.     const gchar *text = gtk_entry_get_text(GTK_ENTRY(entry));
  6.     g_print ("btn clicked\n");
  7.     g_print ("%s\n",text);
  8. }
  9. void on_WindowMain_destroy(GtkWidget *widget,gpointer data)
  10. {
  11.     g_print ("closed\n");
  12.     gtk_main_quit();//必须要加,不然程序不能真正关闭
  13. }

  14. int main (int argc, char **argv)
  15. {
  16.     GtkBuilder *builder;
  17.     GtkWidget *window;
  18.     GtkWidget *btn;
  19.     gtk_init(&argc, &argv); // gtk 初始化
  20.     builder = gtk_builder_new();// 创建新的builder 对象
  21.     gtk_builder_add_from_file(builder, "test.glade", NULL);
  22.     //组件实例化,注意gtk_builder_get_object中填写的名称要和在Glade中设置的ID一致
  23.     window = GTK_WIDGET(gtk_builder_get_object(builder,"WindowMain")); // gtk 窗口实例化
  24.     btn = GTK_WIDGET(gtk_builder_get_object(builder,"btn"));
  25.     entry = GTK_WIDGET(gtk_builder_get_object(builder,"entry"));
  26.     //组件事件绑定                                 
  27.     g_signal_connect (btn, "clicked", G_CALLBACK (on_btn_clicked), builder);
  28.     g_signal_connect (window, "destroy", G_CALLBACK (on_WindowMain_destroy), builder);
  29.     g_object_unref (G_OBJECT (builder));
  30.     gtk_widget_show(window); // 显示windows 窗口包含的所有gtk 组件
  31.     gtk_main(); //gtk 主事件循环开启
  32.     return 0;
  33. }
运行效果
屏幕截图 2025-09-27 164035.png
需要注意的是程序会在开始运行时加载.glade文件,所以生成的.glade文件要和编译出的可执行文件在同一目录,后边如果只是修改窗口布局(如控件大小、位置、颜色等)可以只修改.glade文件而不需要重新编译程序



您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:同飞软件研发工程师
简介:制冷系统单片机软件开发,使用PID控制温度

168

主题

826

帖子

10

粉丝
快速回复 在线客服 返回列表 返回顶部