优秀的编程知识分享平台

网站首页 > 技术文章 正文

初识gtk4(初识不知曲中意,再听已是曲中人下一句是什么)

nanyue 2024-08-13 07:54:26 技术文章 8 ℃

相信也你一样,学完了C语言,觉得它只能写出黑洞洞的命令行程序。那你大错特错,它也能轻易写出图形界面的程序。下面我们就来配置它的开发环境,然后写一个简单的窗口程序。

首先,我们在https://www.msys2.org/这个网站下载msys2-x86_64-20230318.exe,并且按步骤安装它。


安装完成后在菜单中打开MYSY2 MYSY,用 pacman -Suy命令更新一下软件,提示时直接回车就可以了。接着用 pacman -S mingw-w64-i686-gcc安装gcc,用pacman -Ss gtk4 查找一下gtk4的软件包,没错我们就是用gtk4来开发C语言图型界面程序,这是一个纯C语言的图形界面开发工具。为了兼容性我们安装mingw-w64-i686-gtk4 ,用命令pacman -S mingw-w64-i686-gtk4 按提示来安装。最后用 pacman -S mingw-w64-i686-pkg-config 安装pkg-config工具。在菜单中打开MSYS2 MINGW32,输入命令gcc -v并回车,你应该能看到gcc的版本信息,输入pkg-config --cflags --libs gtk4并回车,你应该能看到一大段的路径信息。至此,开发环境配置完成。让我们输入一段代码测试一下吧。

#include <gtk/gtk.h>

static void print_hello(GtkWidget *widget, gpointer data)
{
    int *t;
    t = (int *)data;
    g_print("你好,世界!%d\n", *t);
    (*t)++;
}

static void activate(GtkApplication *app, gpointer user_data)
{
    GtkWidget *window;
    GtkWidget *button;
    int *times = malloc(sizeof(int));
    *times = 1;

    window = gtk_application_window_new(app);
    gtk_window_set_title(GTK_WINDOW(window), "窗口示例程序");
    gtk_window_set_default_size(GTK_WINDOW(window), 200, 200);

    button = gtk_button_new_with_label("你好,世界");
    g_signal_connect(button, "clicked", G_CALLBACK(print_hello), times);
    gtk_window_set_child(GTK_WINDOW(window), button);

    gtk_window_present(GTK_WINDOW(window));
}

int main(int argc, char **argv)
{
    GtkApplication *app;
    int status;

    app = gtk_application_new("gtk.example", G_APPLICATION_DEFAULT_FLAGS);
    g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);
    status = g_application_run(G_APPLICATION(app), argc, argv);
    g_object_unref(app);

    return status;
}

保存为hello.c,比如保存在D:\gtk4\ 中。然后我们在MSYS2 MINGW32中用命令cd /d/gtk4切换到d:\gtk4\目录中,执行命令 gcc `pkg-config --cflags gtk4` hello.c -o hello `pkg-config --libs gtk4`,就得到了hello.exe文件,执行./hello,就出现了一个窗口点击窗口中间,在命令行中会出现“你好,世界!1”,是不是很神奇?


最近发表
标签列表