testing-repository/Gtk4/gtk66_overlay_test/src/main.cpp

50 lines
1.9 KiB
C++
Raw Normal View History

2021-04-11 17:23:07 +08:00
#include <gtk/gtk.h>
#include "src/img7.xpm"
2021-04-11 17:15:12 +08:00
static void button_clicked(GtkWidget *widget,GtkApplication *app){
//A text function of gtk_overlay_get_child
GtkWindow *win=gtk_application_get_active_window(app);
2021-04-11 17:23:07 +08:00
GtkWidget *overlay,*back;
2021-04-11 17:15:12 +08:00
overlay=gtk_window_get_child(win);
2021-04-11 17:23:07 +08:00
back=gtk_overlay_get_child(GTK_OVERLAY(overlay));
GdkPixbuf *pixbuf=gdk_pixbuf_new_from_xpm_data(img7);
GdkPixbuf *sized=gdk_pixbuf_scale_simple(pixbuf,640,360,GDK_INTERP_BILINEAR);
gtk_picture_set_pixbuf(GTK_PICTURE(back),sized);
g_object_unref(pixbuf);
g_object_unref(sized);
//gtk_label_set_label(GTK_LABEL(label),"Test");
2021-04-11 17:15:12 +08:00
}
static void gtkmain(GtkApplication *app,gpointer user_data){
2021-04-11 17:23:07 +08:00
GtkWidget *window,*label1,*overlay,*button,*background;
2021-04-11 17:15:12 +08:00
//Main window
window=gtk_application_window_new(app);
2021-04-11 17:23:07 +08:00
gtk_window_set_default_size(GTK_WINDOW(window),640,360);
2021-04-11 17:15:12 +08:00
gtk_window_set_icon_name(GTK_WINDOW(window),"gtk66");
//Overlay widgets
overlay=gtk_overlay_new();
//Button
button=gtk_button_new_with_label("Test");
g_signal_connect(button,"clicked",G_CALLBACK(button_clicked),app);
gtk_widget_set_halign(button,GTK_ALIGN_CENTER);
gtk_widget_set_valign(button,GTK_ALIGN_END);
gtk_overlay_add_overlay(GTK_OVERLAY(overlay),button);
//Label1
label1=gtk_label_new("label1");
gtk_widget_set_valign(label1,GTK_ALIGN_START);
gtk_widget_set_halign(label1,GTK_ALIGN_CENTER);
gtk_overlay_add_overlay(GTK_OVERLAY(overlay),label1);
//label2
2021-04-11 17:23:07 +08:00
//background=gtk_label_new("label2");
background=gtk_picture_new();
gtk_overlay_set_child(GTK_OVERLAY(overlay),background);
2021-04-11 17:15:12 +08:00
gtk_window_set_child(GTK_WINDOW(window),overlay);
gtk_widget_show(window);
}
int main(int argc,char **argv){
GtkApplication *app;
app=gtk_application_new("org.gtk.daleclack",G_APPLICATION_NON_UNIQUE);
g_signal_connect(app,"activate",G_CALLBACK(gtkmain),NULL);
return g_application_run(G_APPLICATION(app),argc,argv);
}