GTK+ 2.0 教学-档案选择 File Selections

档案选择(file selection)元件是一种快速、简单的显示文件对话框的方法。它带有“Ok”、“Cancel”、“Help”按钮,可以极大地减少程式设计的时间。

[adsense][/adsense]

可以用下面的方法创建档案选择元件:

GtkWidget *gtk_file_selection_new( const gchar *title );

要设置档名,例如,要在打开时指向指定目录,或者给定一个预设档名,可以使用下面的函式:

void gtk_file_selection_set_filename( GtkFileSelection *filesel,
                                      const 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按钮出现在荧幕上,但是它什么也不做,因为没有为它的信号设置回呼函式。

#include <gtk/gtk.h>
/* 获得档名,并将它列印到控制台(console)上 */
static void file_ok_sel( GtkWidget        *w,
                         GtkFileSelection *fs )
{
    g_print ("%s\n", gtk_file_selection_get_filename (GTK_FILE_SELECTION (fs)));
}

int main( int   argc,
          char *argv[] )
{
    GtkWidget *filew;

    gtk_init (&argc, &argv);
    /* 创建一个新的档案选择元件 */
filew = gtk_file_selection_new ("File selection");

    g_signal_connect (filew, "destroy",
	              G_CALLBACK (gtk_main_quit), NULL);
   /* 为ok_button按钮设置回呼函式,连接到file_ok_sel function函式 */
   g_signal_connect (GTK_FILE_SELECTION (filew)->ok_button,
		      "clicked", G_CALLBACK (file_ok_sel), (gpointer) filew);
    /* 为cancel_button设置回呼函式,销毁元件 */
g_signal_connect_swapped (GTK_FILE_SELECTION (filew)->cancel_button,
	                      "clicked", G_CALLBACK (gtk_widget_destroy),
			      filew);
    /* 设置档名,比如这一个档案储存对话框,我们给了一个预设档名 */
    gtk_file_selection_set_filename (GTK_FILE_SELECTION(filew),
				     "penguin.png");

    gtk_widget_show (filew);
    gtk_main ();
    return 0;
}
« 
单元首页

Comments are closed.