我们到处都能看到进度条的应用,我们下载拷贝个文件,下载个电影等总能看到进度条的影子,如图:
进度条的常用操作无非设置其比例或者获取其比例。
进度条的创建:
GtkWidget *gtk_progress_bar_new(void);
返回值:进度条指针
设置进度条显示的进度比例:
void gtk_progress_bar_set_fraction(
GtkProgressBar *pbar, gdouble fraction);
pbar:需要操作的进度条
fraction:0.0到1.0
获取进度条显示的进度比例:
gdouble gtk_progress_bar_get_fraction (GtkProgressBar *pbar);
pbar:需要操作的进度条
返回值:进度比例
设置滑槽上的文本显示:
void gtk_progress_bar_set_text(
GtkProgressBar *pbar, gchar *text);
pbar:需要操作的进度条
text:设置的文本内容
设置进度条的移动方向:
void gtk_progress_bar_set_orientation(
GtkProgressBar *pbar,GtkProgressBarOrientation orientation);
pbar:需要操作的进度条
orientation:移动方向,它是一个枚举变量
GTK_PROGRESS_LEFT_TO_RIGHT:从左向右
GTK_PROGRESS_RIGHT_TO_LEFT:从右向左
GTK_PROGRESS_BOTTOM_TO_TOP:从下向上
GTK_PROGRESS_TOP_TO_BOTTOM:从上向下
获取进度条的方向:
GtkProgressBarOrientation
gtk_progress_bar_get_orientation(GtkProgressBar *pbar);
pbar:需要操作的进度条
返回值:进度条的方向,它是一个枚举类型
例子代码如下:
#include <gtk/gtk.h> //回调函数,切换进度条的移动方向 void toggle_orientation(GtkWidget *widget, gpointer data) { switch (gtk_progress_bar_get_orientation(GTK_PROGRESS_BAR(data)) ) { case GTK_PROGRESS_LEFT_TO_RIGHT: gtk_progress_bar_set_orientation(GTK_PROGRESS_BAR(data), GTK_PROGRESS_RIGHT_TO_LEFT); break; case GTK_PROGRESS_RIGHT_TO_LEFT: gtk_progress_bar_set_orientation(GTK_PROGRESS_BAR(data), GTK_PROGRESS_LEFT_TO_RIGHT); break; default: break; } return; } //回调函数,更新进度条,这样可以看到进度条的移动 void callback(GtkWidget *widget, gpointer data) { gdouble new_val = gtk_progress_bar_get_fraction(GTK_PROGRESS_BAR(data)) +0.05; if (new_val > 1.0) { new_val = 0.0; } //设置进度条新值 gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(data), new_val); return; } int main(int argc, char *argv[]) { //1.gtk环境的初始化 gtk_init(&argc, &argv); //2.创建一个窗口 GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); //设置窗口的标题 gtk_window_set_title(GTK_WINDOW(window), "gtk_progress_bar"); //设置窗口边框宽度 gtk_container_set_border_width(GTK_CONTAINER(window), 10); //3.设置窗口的最小大小 gtk_widget_set_size_request(window, 300, 200); //4.窗口关联destroy信号到gtk_main_quit g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); //5.创建一个垂直容器 GtkWidget *vbox = gtk_vbox_new(FALSE, 5); //将vbox添加到window中 gtk_container_add(GTK_CONTAINER(window), vbox); //6.创建一个进度条 GtkWidget *progress = gtk_progress_bar_new(); //将progress添加到vbox中 gtk_container_add(GTK_CONTAINER(vbox), progress); //7.设置进度条的百分比为50% gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress), 0.5); //8.设置进度条上显示的文字 gtk_progress_bar_set_text(GTK_PROGRESS_BAR(progress), "some text"); //9.添加一个button1按钮,切换方向 GtkWidget *button1 = gtk_button_new_with_label("right to lift"); gtk_container_add(GTK_CONTAINER(vbox), button1); g_signal_connect(button1, "clicked", G_CALLBACK( toggle_orientation ), progress); //10.添加一个button2,移动进度条 GtkWidget *button2 = gtk_button_new_with_label("add"); gtk_container_add(GTK_CONTAINER(vbox), button2); g_signal_connect(button2, "clicked", G_CALLBACK(callback), progress); //11.显示所欲窗口 gtk_widget_show_all(window); //12.主事件循环 gtk_main(); return 0; }
运行结果:
源码下载:http://download.csdn.net/download/lianghe_work/8939381
版权声明:本文为博主原创文章,未经博主允许不得转载。