1 Star 0 Fork 0

iynaur87/learnGTK3

forked from lion_ry/learnGTK3 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
main.c 2.80 KB
一键复制 编辑 原始数据 按行查看 历史
PengLu 提交于 2020-02-10 14:47 . -
/*
* 学习 GTK3 GUI 编程
* 参考网站:https://www.jianshu.com/nb/14253609
*/
#include <gtk/gtk.h>
static void button1_handler(GtkWidget* widget, gpointer user_data)
{
g_print(user_data);
g_print("\n");
}
//创建回调函数 activate,方便下面 g_signal_connect() 调用
static void activate(GtkApplication *app, gpointer user_data) {
// 创建一个新的 GtkWindow 并将其存储在 window 指针中。窗口将有一个框架,标题栏和窗口控件取决于平台
GtkWidget *window = gtk_application_window_new(app);
GtkWidget *grid = gtk_grid_new();
gtk_container_add(GTK_CONTAINER(window), grid);
// 通过 gtk_button_box_new() 函数创建一个 GtkButtonBox 布局,参数 GTK_ORIENTATION_HORIZONTAL 代表方向,这里是水平布局
// GtkWidget *button_box = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL);
// 通过 gtk_button_new_with_label() 函数创建一个 GtkButton 控件,参数“按钮1”代表按钮文本字符串
GtkWidget *button1 = gtk_button_new_with_label("按钮1");
GtkWidget *button2 = gtk_button_new_with_label("按钮2");
GtkWidget *button3 = gtk_button_new_with_label("按钮3");
gtk_grid_attach(GTK_GRID(grid), button1, 0, 0, 1, 1);
gtk_grid_attach(GTK_GRID(grid), button2, 1, 0, 1, 1);
gtk_grid_attach(GTK_GRID(grid), button3, 0, 1, 2, 1);
// 通过 gtk_container_add() 函数将 button_box 布局添加到 window 主窗口中。gtk_container_add 函数需要一个 GtkContainer 作为
// 参数,这里使用 GTK_CONTAINER 宏将 window 强制转型为 GtkContainer
// gtk_container_add(GTK_CONTAINER(window), button_box);
// gtk_container_add(GTK_CONTAINER(button_box), button1);
g_signal_connect(button1, "clicked", G_CALLBACK(button1_handler), "按钮 1 点击");
g_signal_connect(button2, "clicked", G_CALLBACK(button1_handler), "按钮 2 点击");
g_signal_connect(button3, "clicked", G_CALLBACK(button1_handler), "按钮 3 点击");
gtk_window_set_title(GTK_WINDOW(window), "hello GTK");
gtk_window_set_default_size(GTK_WINDOW(window), 500, 400);
gtk_widget_show_all(window);
}
int main(int argc, char **argv) {
// 创建 GtkApplication 这个类的一个实例,启动程序需要此实例
GtkApplication *app = gtk_application_new("org.lu.firstAPP", G_APPLICATION_FLAGS_NONE);
// 将 GtkApplication 实例 app 连接到信号 activate
g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);
// g_application_run() 函数用于启动应用程序,当退出应用程序时 g_application_run() 将返回一个保存在名为 status 的整数中的整数
int status = g_application_run(G_APPLICATION(app), argc, argv);
// 当退出应用程序时 g_object_unref() 将 GtkApplication 对象从内存中释放出来
g_object_unref(app);
return status;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/iynaur/learnGTK3.git
git@gitee.com:iynaur/learnGTK3.git
iynaur
learnGTK3
learnGTK3
master

搜索帮助