プログレスバー

2014年9月7日

ファイル

17-progress.tar.gz

内容

プログレスバーを使ってみます。プログレスバーは次のように作ります。

	progress = gtk_progress_bar_new();
	gtk_progress_bar_set_text(GTK_PROGRESS_BAR(progress), "0%");

gtk_progress_bar_set_text() で初期の文字列を "0%" に設定しています。

プログレスバーを動かすために、タイマーを使います。

	timer = g_timeout_add(500., timerEvent, progress);

500 ms ごとに timer() を呼び出し、引数に progress を渡します。timerEvent() は次のようになっています。

gboolean timerEvent(gpointer progress)
{
	static int fraction = 0;
	char str[5];

	fraction += 10;
	if(fraction > 100) fraction = 0;

	sprintf(str, "%d%%", fraction);

	gtk_progress_bar_set_text(GTK_PROGRESS_BAR(progress), str);
	gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress), fraction/100.);

	return TRUE;
}

fraction がプログレスバーのパーセンテージを表わします。gtk_progress_bar_set_text() でプログレスバーの文字列を更新し、gtk_progress_bar_set_fraction() でプログレスバーの進み具合を更新します。返り値を TRUE にしておけば、timerEvent() は再びタイマーから呼び出されます。

不要になったタイマーは gtk_timeout_remove() で取り除きます。

	gtk_timeout_remove(timer);

GTK+ プログラミング 目次へ