这是我使用GTK+的简单进度条的代码,但它似乎没有更新。我使用的是Ubuntu 14.04
//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;
}
您从未从inc_prog()
返回值,这是未定义的行为。有关正确操作的详细信息,请参阅g_timeout_add()
的文档。