设为首页 加入收藏

TOP

12.6.1 进度条、微条按钮、组合框
2013-10-12 06:47:42 来源: 作者: 【 】 浏览:120
Tags:12.6.1 进度 按钮 组合

12.6  常用控件

12.6.1  进度条、微条按钮、组合框

1.进度条控件

创建进度条要使用GtkAdjustment控件。GtkAdjustment用来存储上边界、下边界、步进值等信息。

(1)创建GtkAdjustment

GtkObject* gtk_adjustment_new(gfloat value,gfloat lower,gfloat upper,
gfloat step_increment,gfloat page_increment,gloat page_size)

(2)创建进度条

GtkWidget* gtk_progress_bar_new(void)
GtkWidget* gtk_progress_bar_new_with_adjustment(GtkAdjustment *adjustment)

(3)设置进度条的样式

void gtk_progress_bar_set_bar_style(GtkProgressBar *pbar,
GtkProgressBarStyle style)

其中style取值如下。

GTK_PROGRESS_CONTINUOUS:连续进度条。

GTK_PROGRESS_DISCRETE:条块进度条。

(4)设置进度条方向

void gtk_progress_bar_set_orientation(GtkProgressBar *pbar,
GtkProgressBarOrientation orientation)

其中orientation取如下值。

GTK_PROGRESS_LEFT_TO_RIGHT:从左往右显示进度。

GTK_PROGRESS_RIGHT_TO_LEFT:从右往左显示进度。

GTK_PROGRESS_BOTTOM_TO_TOP:从下往上显示进度。

GTK_PROGRESS_TOP_TO_BOTTOM:从上往下显示进度。

(5)更新进度

void gtk_progress_bar_update(GtkProgressBar *pbar, gfloat percentage)

2.微调按钮

创建微调按钮也要使用GtkAdjustment控件。

(1)创建GtkSpinButton

GtkWidget* gtk_spin_button_new(GtkAdjustment *adjustment,
gfloat climb_rate,gfloat digits)

参数含义如下。

climb_rate:每步的增加值。

digits:包含的小数位数。

(2)获取和设置微调按钮的值

gfloat gtk_spin_button_get_value_as_float(GtkSpinButton *spin_button)
void gtk_spin_button_set_value(GtkSpinButton *spin_button,gfloat value)

(3)获取和设置GtkAdjustment

GtkAdjustment* gtk_spin_button_get_adjustment(GtkSpinButton *spin_button)
void gtk_spin_button_set_adjustment(GtkSpinButton *spin_button,
GtkAdjustment *adjustment)

3.组合框

组合框是编辑框和列表框的组合。

(1)创建组合框要使用GList,用于保存显示的字符串。向GList中添加字符串的函数是:

void g_list_append(GList *list,char *string)

(2)创建组合框

GtkWidget* gtk_combo_new(void)

(3)设置组合框中显示的字符串

void gtk_combo_set_popdown_strings(GtkCombo *combo,GList *strings)

例12-5  进度条、组合框、微条按钮的使用,程序名为control.c

#include

int main(int argc,char **argv)
{
GtkWidget *window;
GtkWidget *vbox;
GtkObject *adjustment;
GtkWidget *bar;
GtkWidget *spinbutton;
GList        *glist;
GtkWidget *combo;

gtk_init(&argc,&argv);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(GTK_OBJECT(window),"destroy",
GTK_SIGNAL_FUNC(gtk_main_quit),NULL);
gtk_container_border_width(GTK_CONTAINER(window),40);

vbox = gtk_vbox_new(FALSE,0);
gtk_container_add(GTK_CONTAINER(window),vbox);

/*创建进度条*/
adjustment = gtk_adjustment_new(70.0,0.0,100.0,1.0,0.0,0.0);
bar = gtk_progress_bar_new_with_adjustment(GTK_ADJUSTMENT(adjustment));
gtk_progress_bar_set_bar_style(GTK_PROGRESS_BAR(bar),
GTK_PROGRESS_CONTINUOUS);
gtk_progress_bar_set_orientation(GTK_PROGRESS_BAR(bar),
GTK_PROGRESS_LEFT_TO_RIGHT);
gtk_box_pack_start(GTK_BOX(vbox),bar,TRUE,TRUE,15);
gtk_widget_show(bar);

/*微调按钮*/
adjustment = gtk_adjustment_new(80.0,0.0,100.0,1.0,0.0,0.0);
spinbutton = gtk_spin_button_new(GTK_ADJUSTMENT(adjustment),1.0,1);
gtk_box_pack_start(GTK_BOX(vbox),spinbutton,TRUE,TRUE,15);
gtk_widget_show(spinbutton);

/*创建组合框*/
glist = NULL;
glist = g_list_append(glist,"apple");
glist = g_list_append(glist,"banana");
glist = g_list_append(glist,"orange");
glist = g_list_append(glist,"pear");
combo = gtk_combo_new();
gtk_combo_set_popdown_strings(GTK_COMBO(combo),glist);
gtk_box_pack_start(GTK_BOX(vbox),combo,TRUE,TRUE,15);
gtk_widget_show(combo);

gtk_widget_show(vbox);
gtk_widget_show(window);

gtk_main();

return 0;
}

程序运行后的界面如图12-6所示。

图12-6  运行结果界面

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇12.1.2 GTK+简介 下一篇12.7 进一步学习建议

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: