先下载gtk的库:
https://labisart.com/blog/index.php/Home/Index/article/aid/336
然后新建plainc++工程,链接上:
SRCDIR = $$PWD/../GTK4_Gvsbuild_2024.12.0_x64LIBDIR = $${SRCDIR}/lib LIBS += \ $${LIBDIR}/gio-2.0.lib \ $${LIBDIR}/cairo.lib \ $${LIBDIR}/gdk_pixbuf-2.0.lib \ $${LIBDIR}/glib-2.0.lib \ $${LIBDIR}/gtk-4.lib \ $${LIBDIR}/harfbuzz.lib \ $${LIBDIR}/pango-1.0.lib \ $${LIBDIR}/graphene-1.0.lib \ $${LIBDIR}/gobject-2.0.lib \ INCDIR = $${SRCDIR}/include INCLUDEPATH += \ $${INCDIR} \ $${INCDIR}/gtk-4.0/ \ $${INCDIR}/glib-2.0/ \ $${LIBDIR}/glib-2.0/include/ \ $${INCDIR}/cairo/ \ $${INCDIR}/pango-1.0 \ $${INCDIR}/harfbuzz \ $${INCDIR}/gdk-pixbuf-2.0 \ $${INCDIR}/graphene-1.0 \ $${LIBDIR}/graphene-1.0/include \
最后给示例程序:
#include <iostream> #include <Windows.h> #include <gtk-4.0/gtk/gtk.h> static void print_hello(GtkWidget* widget, gpointer data) { g_print("Hello World\n"); } static void activate(GtkApplication* app, gpointer user_data) { GtkWidget* window; GtkWidget* button; GtkWidget* box; // 创建 window window = gtk_application_window_new(app); gtk_window_set_title(GTK_WINDOW(window), "Window"); gtk_window_set_default_size(GTK_WINDOW(window), 200, 200); // box layout box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_widget_set_halign(box, GTK_ALIGN_CENTER); gtk_widget_set_valign(box, GTK_ALIGN_CENTER); gtk_window_set_child(GTK_WINDOW(window), box); // button to box layout button = gtk_button_new_with_label("Hello World"); g_signal_connect(button, "clicked", G_CALLBACK(print_hello), NULL); g_signal_connect_swapped(button, "clicked", G_CALLBACK(gtk_window_destroy), window); // 关联 click 到 window destroy gtk_box_append(GTK_BOX(box), button); // 显示 window gtk_window_present(GTK_WINDOW(window)); } using namespace std; int main() { GtkApplication* app; int status; app = gtk_application_new("org.gtk.example", G_APPLICATION_FLAGS_NONE); g_signal_connect(app, "activate", G_CALLBACK(activate), NULL); status = g_application_run(G_APPLICATION(app), 0,nullptr); g_object_unref(app); return status; }
运行后挺帅的吧: