进度条未使用C++代码和GTK+进行更新

Progress bar not updated using C++ code and GTK+

本文关键字:GTK+ 更新 C++ 未使用 代码      更新时间:2023-10-16

这是我使用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()的文档。