先下载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;
}运行后挺帅的吧:
