文件选择 File Selections
文件选择(file selection)构件是一种快速、简单的显示文件对话框的方法。它带有“Ok”、“Cancel”、“Help”按钮,可以极大地减少编程时间。
可以用下面的方法创建文件选择构件:
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)上 */
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 (G_OBJECT (filew), "destroy",
G_CALLBACK (gtk_main_quit), NULL);
/* 为ok_button按钮设置回调函数,连接到file_ok_sel function函数 */
g_signal_connect (G_OBJECT (GTK_FILE_SELECTION (filew)->ok_button),
"clicked",
G_CALLBACK (file_ok_sel), filew);
/* 为cancel_button设置回调函数,销毁构件 */
g_signal_connect_swapped (G_OBJECT (GTK_FILE_SELECTION (filew)->cancel_button),
"clicked",
G_CALLBACK (gtk_widget_destroy), filew);
/* 设置文件名,比如这个一个文件保存对话框,我们给了一个缺省文件名 */
gtk_file_selection_set_filename (GTK_FILE_SELECTION(filew),
"softool.png");
gtk_widget_show (filew);
gtk_main ();
return 0;
}