180 likes | 323 Views
19.1 窗口. 所谓窗口,指的是一个应用程序的界面框架。程序的所有内容和交互都在这个一个窗口中。在设置程序的界面时,需要先建立一个窗口。本节将讲述程序窗口的建立与设置。. 19.1.1 最简单的窗口程序. 本小节将建立一个最简单的图形界面程序,用这个图形界面程序来讲述窗口的建立过程。程序的代码如下所示。. 19.1.2 窗口的构建过程. 从上一小节的程序可知,在 C 程序中建立一个窗口,编写的程序也是一个普通的 C 程序。只是在程序中调用了 gtk 库,使用了图形界面相关的数据类型。要建立一个图形界面的程序,需要在一个 C 程序中完成下面这些操作。.
E N D
19.1 窗口 • 所谓窗口,指的是一个应用程序的界面框架。程序的所有内容和交互都在这个一个窗口中。在设置程序的界面时,需要先建立一个窗口。本节将讲述程序窗口的建立与设置。
19.1.1 最简单的窗口程序 • 本小节将建立一个最简单的图形界面程序,用这个图形界面程序来讲述窗口的建立过程。程序的代码如下所示。
19.1.2 窗口的构建过程 • 从上一小节的程序可知,在C程序中建立一个窗口,编写的程序也是一个普通的C程序。只是在程序中调用了gtk库,使用了图形界面相关的数据类型。要建立一个图形界面的程序,需要在一个C程序中完成下面这些操作。
19.1.3 新建窗口函数gtk_window_new • gtk_window_new函数可以建立一个GTK窗口。这个函数的使用方法如下所示。 • GtkWidget* gtk_window_new (GtkWindowType type); • 在参数列表中,type是一个表示窗口状态的常量,可能有下面这两种取值。 • GTK_WINDOW_TOPLEVEL:表示这个窗口是正常的窗口。窗口可以最小化,最小化以后,在窗口管理器中可以看到这一个窗口的按钮。窗口管理器就是Windows系统的任务栏。 • GTK_WINDOW_POPUP:表示这个窗口是一个弹出式窗口,不可以最小化。但这个窗口是一个独立运行的程序,并不是一个对话框。
19.1.4 设置窗口的标题 • 函数可以设置一个窗口的标题,这个函数的使用方法如下所示。 • void gtk_window_set_title (GtkWindow *window, gchar *title); • 在参数列表中,window是表示一个窗口的指针。title是需要设置的标题。
19.1.5 设置窗口的大小与位置 • 窗口的大小指的是窗口的宽度和高度。可以用gtk_widget_set_usize函数来设置一个窗口的大小。窗口的位置指的是窗口的左上顶点到屏幕左边和顶边的边距。可以用widget_set_uposition函数来设置窗口的位置。这两个函数的使用方法如下所示。 • void gtk_widget_set_usize(GtkWidget *widget,gint width,gint height); • void gtk_widget_set_uposition (GtkWidget *widget,gint x,gint y);
19.2 标签 • 所谓标签,指的是程序中的一个文本。这个文本可以显示一定的信息,但是用户不能改变和输入标签的内容。程序中的提示信息或显示内容都是通过标签来实现的。
19.2.1 建立一个标签 • 在窗口中使用标签以前,需要创建一个标签。函数gtk_label_new可以新建一个标签,这个函数的使用方法如下所示。 • GtkWidget* gtk_label_new(gchar *str); • 参数列表中,str是标签中需要显示的内容。函数会建立一个标签,然后返回一个GtkWidget类型的指针。如果标签创建失败,会返回一个NULL指针。建立标签以后,需要用gtk_widget_show函数来显示这个标签。
19.2.2 将标签添加到窗口中 • 在gtk窗口中,除了window窗口以外,其他的任何元件都必须放置在一个容器中。上一小节所建立的标签,并不能直接显示,而需要放在一个窗口元件中。gtk_container_add函数的作用,是把一个元件放置在另一个元件窗口中。这个函数的使用方法如下所示。 • void gtk_container_add (GtkContainer *container, GtkWidget *widget);
19.2.3 设置与获取标签的文本 • 在程序中,可以用gtk_label_get_text函数来获取一个标签的文本,或者用gtk_label_set_text函数来设置一个标签的文本。这两个函数的使用方法如下所示。 • const gchar* gtk_label_get_text(GtkLabel *label); • void gtk_label_set_text(GtkLabel *label, gchar *str); • 在参数列表中,label是表示一个标签的指针。gtk_label_set_text函数参数中的str是需要设置标签的文本。gtk_label_get_text函数会取得标签的文本然后返回一个字符串。
19.2.4 实例:用标签显示当前时间 • 本小节将讲解一个标签应用实例,在一个窗口中用一个标签显示当前的时间。前面的章节中已经讲述过时间的处理方法,可以把当前的时间转换成一个字符串保存在字符串变量中。然后用gtk_label_set_text函数将字符串的内容设置成为标签的文本。
19.3 按钮 • 窗口程序中的很多操作都是通过窗口程序的单击来实现的。本小节将讲解在GTK界面中添加按钮元件,主要内容包括按钮的创建、设置等操作。
19.3.1 添加一个按钮 • 函数gtk_button_new_with_label可以新建一个带有标签的按钮。这个函数的使用方法如下所示。 • GtkWidget* gtk_button_new_with_label(gchar *label); • 函数的参数是一个字符串,这个字符串会显示在按钮上。函数会返回一个GtkWidget类型的指针。建立这个按钮以后,并不会直接显示,而需要调用gtk_widget_show函数来显示这个按钮。
19.3.2 取得与设置按钮的标签 • 按钮的标签指的是按钮上的文字。函数gtk_button_get_label可以取得一个按钮的标签,函数gtk_button_set_label可以设置一个按钮的标签。这两个函数的使用方法如下所示。 • const gchar* gtk_button_get_label (GtkButton *button); • void gtk_button_set_label (GtkButton *button, const gchar *label); • 在参数列表中,button是表示一个按钮的指针。函数gtk_button_get_label会取得这个按钮的标签作为一个字符串返回。函数gtk_button_set_label会把参数label的字符串设置成按钮的标签。
19.4 文本框 • 文本框指的是程序中的输入区域。用户可以在这个区域中用键盘输入内容。界面程序中的各种输入都是通文本框的来完成的。本节将讲解gtk窗口中文本框的使用。
19.4.1 建立文本框 • 在窗口中使用文本框以前需要建立文本框,gtk_entry_new函数可以完成建立文本框的操作。这个函数的使用方法如下所示。 • GtkWidget* gtk_entry_new (void); • 从函数的使用方法可知,这个函数没有参数,会返回一个GtkWidget类型的指针。如果文本框创建不成功,会返回一个NULL指针。
19.4.2 获取与设置文本框数据 • 文本框中输入数据以后,需要取得这些数据进行处理。新建文本框时可以设置文本框的初始内容。函数gtk_entry_get_text与函数entry_set_text可以分别完成这两个功能。这两个函数的使用方法如下所示。 • const gchar* gtk_entry_get_text (GtkEntry *entry); • void gtk_entry_set_text (GtkEntry *entry, const gchar *text); • 在参数列表中,entry是一个表示文本框的指针。函数gtk_entry_get_text会返回用户在文本框中输入的字符串。函数gtk_entry_set_text中,text是需要设置到文本框中的字符串,这个函数没有返回值。下面的实例,是在建立一个按钮以后设置这个文本框的初始内容。然后取得文本框的文本添加一个字符串以后设置到这个文本框中。
19.5 小结 • 本节讲述了GTK图形界面编程时基本原理、窗口、按钮、标签、文本框等图形元件的简单操作。通过这些知识的学习,可以对Linux界面编程有一个大致的了解,可以用这些元件编写出简单的Linux界面程序。窗口等元件的使用是本章的重点,需要理解元件建立和过程、元件简单设置等操作。