代码拉取完成,页面将自动刷新
同步操作将从 lion_ry/learnGTK3 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
/*
* 学习 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;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。