GTK常用控件之进度条( GtkProgressBar )

来源:互联网 发布:linux 搭建OpenVPN 编辑:程序博客网 时间:2024/04/28 02:28

我们到处都能看到进度条的应用,我们下载拷贝个文件,下载个电影等总能看到进度条的影子,如图:


进度条的常用操作无非设置其比例或者获取其比例。


进度条的创建:
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

转自:

1 0
原创粉丝点击