2016-05-15 11 views
0

Hier ist mein Code für einen einfachen Fortschrittsbalken mit GTK +, aber es scheint nicht zu aktualisieren. Ich bin mit Ubuntu 14.04. (Der Fehler wurde behoben, durch WAHR Rückkehr g_boolean so dass die Funktion aufgerufen wird)Fortschrittsbalken nicht aktualisiert mit C++ - Code und GTK +

//CodeGoes here 
#include<gtk/gtk.h> 
#include<cstring> 
static float percentage =0.0; 

static gboolean inc_prog(gpointer data){ 
    percentage+=0.05; 
    if(percentage>1.0) 
     percentage=0.0; 
    gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(data),percentage); 
    char ch[3]; 
    sprintf(ch,"%d%%",static_cast<int>(percentage*100)); 
    gtk_progress_bar_set_text(GTK_PROGRESS_BAR(data),ch); 
    return TRUE; //Change Made Here 
} 

int main(int argc,char* argv[]){ 
    gtk_init(&argc,&argv); 
    GtkWidget *window,*progress; 
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 
    g_signal_connect(window,"delete-event",G_CALLBACK(gtk_main_quit),NULL); 

    progress=gtk_progress_bar_new();//define instance 

    g_timeout_add(300,inc_prog,progress);//delay of 300 ms 
    gtk_container_add(GTK_CONTAINER(window),progress); 

    gtk_widget_show_all(window); 
    gtk_main(); 
    return 0; 
} 
+0

'ch' hat unzureichende Puffergröße. Es sollte mindestens 5 Elemente zum Speichern von "100%" haben. – MikeCAT

+1

Sie haben nie einen Wert von 'inc_prog()' zurückgegeben. Details finden Sie in der Dokumentation von 'g_timeout_add()'. – andlabs

+0

Das war hilfreich .. Danke @andlabs –

Antwort

0

Sie nie einen Wert von inc_prog() zurückgegeben, die nicht definiertes Verhalten ist. Einzelheiten dazu finden Sie in der Dokumentation von g_timeout_add().