GTK实现旋转加载动画

⌚Time: 2022-08-03 14:46:54

👨‍💻Author: Jack Ge

gtk_spinner的使用


#include <gtk/gtk.h>



GtkWidget *window = NULL;

GtkWidget *spinner = NULL;



static void

on_play_clicked (GtkButton *button, gpointer user_data)

{

  gtk_spinner_start (GTK_SPINNER (spinner));

}



static void

on_stop_clicked (GtkButton *button, gpointer user_data)

{

  gtk_spinner_stop (GTK_SPINNER (spinner));

}

int main() {

    GtkWidget *vbox;

    GtkWidget *hbox;

    GtkWidget *button;

    gtk_init(NULL, NULL);

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

    gtk_window_set_default_size(GTK_WINDOW(window), 200, 300);



    vbox = gtk_vbox_new (FALSE, 5);

    gtk_container_add (GTK_CONTAINER (window), vbox);

    gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);

    spinner = gtk_spinner_new ();

    gtk_container_add (GTK_CONTAINER (vbox), spinner);



    hbox = gtk_hbox_new (FALSE, 5);

    button = gtk_button_new_from_stock (GTK_STOCK_MEDIA_PLAY);

    g_signal_connect (G_OBJECT (button), "clicked",G_CALLBACK (on_play_clicked), spinner);

    gtk_container_add (GTK_CONTAINER (hbox), button);

    button = gtk_button_new_from_stock (GTK_STOCK_MEDIA_STOP);

    g_signal_connect (G_OBJECT (button), "clicked",G_CALLBACK (on_stop_clicked), spinner);

    gtk_container_add (GTK_CONTAINER (hbox), button);

    gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);



    gtk_widget_show_all(window);

    g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(gtk_main_quit),NULL);

    gtk_main();

    return 0;

}

结果