0
我的項目有運行時間。我用下面的代碼展示它:如何插入一個進度條來顯示項目的運行時間進度?
#include <opencv2/opencv.hpp>
#include <gtk/gtk.h>
#include <time.h>
using namespace cv;
using namespace std;
gboolean Func (gpointer data) {
gdouble value;
GString *text;
//part of code that generate run time
clock_t start, end;
start = clock();
Mat image, src1, DENO;
image = imread("C:/Users/Alireza/Desktop/1.png");
cvtColor(image, src1, CV_RGB2GRAY);
fastNlMeansDenoising(src1, DENO, 19, 29, 38);
imwrite("DENO.png", DENO);
end = clock();
int runtime = ((int)(end - start))/CLOCKS_PER_SEC;
cout << "Time1 = " << runtime << "s" << endl;
//part of code that I want to show run time progress by progress bar
value = gtk_progress_bar_get_fraction(GTK_PROGRESS_BAR(data));
value += 0.01;
if (value > 1.0) {
value = 0.0;
}
text = g_string_new(gtk_progress_bar_get_text(GTK_PROGRESS_BAR(data)));
g_string_sprintf(text, "%d%%", (int)(value * 100));
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(data), value);
gtk_progress_bar_set_show_text(GTK_PROGRESS_BAR(data), TRUE);
gtk_progress_bar_set_text(GTK_PROGRESS_BAR(data), text->str);
while (gtk_events_pending())
gtk_main_iteration();
return TRUE;
}
int main(int argc, char *argv[])
{
GtkWidget *window;
GtkWidget *progressBar;
gint timer;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "GtkProgressBar");
gtk_window_set_default_size(GTK_WINDOW(window), 300, 30);
progressBar = gtk_progress_bar_new();
timer = g_timeout_add(100, Func, progressBar);
gtk_container_add(GTK_CONTAINER(window), progressBar);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
我想使用進度條顯示進度我的項目。圖片:
但我不能這些代碼結合在一起,以顯示我的項目的進度運行時間。我是gtk3的新手。有沒有人對此有任何想法或建議?
@ jcoppens:非常感謝您的指導。我更新我的代碼。但我想通過進度條顯示運行時間進度。例如,在我的代碼中,我有一部分生成運行時(與OpenCV的圖像處理相關)。圖像運行時間爲5秒。我想通過進度條(1秒的任何一個等於20%)同時顯示5秒的進度。如果有可能請指導我編輯我的代碼 –
任何沒有身體幫助我? –