Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

GTK入门导引

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

  在这个小程式中有四个区域在一般的Progress Bar操作上, 我们会一个一个看到.


pbar = gtk_progress_bar_new ();

  产生Progress Bar, pbar.


ptimer = gtk_timeout_add (100, progress, pbar);

  使用timeouts来产生一个固定时间间隔, Progress Bar不见的一定要用timeouts.


pvalue = GTK_PROGRESS_BAR (data)->percentage;

  这行指定目前的值.


gtk_progress_bar_update (GTK_PROGRESS_BAR (data), pvalue);

  最後, 这行更新Progress Bar的值.

  这就是Progress Bars, enjoy.

  10.3 对话盒

  对话盒物件很简单, 是个预先做好的视窗. 对话盒的结构如下:


struct GtkDialog
{
GtkWindow window;
GtkWidget *vbox;
GtkWidget *action_area;
};

  您看到, 它就是产生一个新的视窗. 然後包一个vbox到它上面, 接著一个seperator, 然後是hbox给"action_area".

  对话盒是用於通告讯息, 及类似用途. 这很基本, 只有一个函数:


GtkWidget* gtk_dialog_new (void);

  因此要产生新的对话盒,


GtkWidget window;
window = gtk_dialog_new ();

  这会产生对话盒, 然後您可以任意使用它. 然後将按钮包装到action_area, 像这样:


button = ...
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area), button,
TRUE, TRUE, 0);
gtk_widget_show (button);

  然後您也可以用封装新增一个vbox, 例如, 一个新标签, 试试看:


label = gtk_label_new ("Dialogs are groovy");
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), label, TRUE,
TRUE, 0);
gtk_widget_show (label);

  做为一个对话盒的范例, 你可以使用两个按钮在action_area, 一个Cancel及Ok按钮, 及一个标签在vbox area, 问使用者一个问题或提示错误的发生等等. 然後您可以接到不同的信号上来处理使用者的选择.

  10.4 Pixmaps

  Undocumented.

  10.5 Images

  Undocumented.

  11. 档案选取物件

  档案选取物件是个又快又简单的方法来产生一个File dialog box. 它有Ok, Cancel, 及Help按钮, 可以大量缩短开发时间.

  要产生一个新的档案选取物件可用:


GtkWidget* gtk_file_selection_new (gchar *title);

  要设定档名, 例如指定目录, 或给定内定档名, 可用这个函数:


void gtk_file_selection_set_filename (GtkFileSelection *filesel,
gchar *filename);

  要取得使用者输入的名称, 可用以下函数:


gchar* gtk_file_selection_get_filename (GtkFileSelection *filesel);

  另外还有指标指向档案选取物件的内容:


dir_list 
file_list 
selection_entry 
selection_text 
main_vbox 
ok_button 
cancel_button 
help_button 

  当然了您会想要用ok_button, cancel_button, 及help_button指标用来处理信号.

  在这里包含了从testgtk.c偷来的一个范例, 修改成自己的版本. 在此您可以看到, 要产生一个档案选取物件不需要做太多事. 在此, 在这个范例中, Help button显示在萤幕中, 它没做什麽事, 因为没有信号接在上面.


#include <gtk/gtk.h>
/* 取得选取的档名并显示在萤幕上 */
void file_ok_sel (GtkWidget *w, GtkFileSelection *fs)
{
g_print ("%s
", gtk_file_selection_get_filename (GTK_FILE_SELECTION (fs)));
}
void destroy (GtkWidget *widget, gpointer *data)
{
gtk_main_quit ();
}
int main (int argc, char *argv[])
{
GtkWidget *filew;
gtk_init (&argc, &argv);
/* 产生新的档案选取物件 */
filew = gtk_file_selection_new ("File selection");
gtk_signal_connect (GTK_OBJECT (filew), "destroy",
(GtkSignalFunc) destroy, &filew);
/* 把ok_button接到file_ok_sel功能 */
gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (filew)->ok_button),
"clicked", (GtkSignalFunc) file_ok_sel, filew );
/* 把cancel_button接到destroy物件 */
gtk_signal_connect_object (GTK_OBJECT (GTK_FILE_SELECTION 
(filew)->cancel_button),
"clicked", (GtkSignalFunc) gtk_widget_destroy,
GTK_OBJECT (filew));
/* 设定档名, 就像是要存一个档案一样, 而我们是给定一个内定档名 */
gtk_file_selection_set_filename (GTK_FILE_SELECTION(filew), 
 "penguin.png");
gtk_widget_show(filew);
gtk_main ();
return 0;
}


 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:GTK+/Gnome应用开发   下一篇:GTK v1.2 Tutorial(英文)

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号