框架(Frames)
框架(Frames)可以用于在盒子中封装一个或一组构件,框架本身还可以有一个标签。标签的位置和盒子的风格可以灵活改变。在UI设置中,使用框架还是比较多的,也比较简单。看下面的示例代码吧!
linux操作系统。
首先/安装gtk
sudo apt-get install libgtk2.0*
//安装基于GTK的界面GTK是开发Gnome窗口的c/c++语言图形库
sudo apt-get install glade libglade2-dev
创建文件main.c
#vim main.c
/*File:frames.c
*Date:2014-02-09
*Author:sjin
*Mail:[email protected]
*/
#include <gtk/gtk.h>
int main( int argc, char *argv[] )
{
/* GtkWidget 是构件的存储类型 */
GtkWidget *window;
GtkWidget *frames;
/* 这个函数在所有的 GTK 程序都要调用。参数由命令行中解析出来并且送到该程序中*/
gtk_init (&argc, &argv);
/* 创建一个新窗口 */
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
/*设置窗口标题*/
gtk_window_set_title(GTK_WINDOW(window),"Frame Example!");
/**/
gtk_window_set_policy(GTK_WINDOW(window),TRUE,TRUE,TRUE);
/* 当窗口收到 "delete_event" 信号 (这个信号由窗口管理器发出,通常是“关闭”
* 选项或是标题栏上的关闭按钮发出的),我们让它调用在前面定义的 destroy_window() 函数。
* 传给回调函数的 data 参数值是 NULL,它会被回调函数忽略。*/
g_signal_connect (GTK_OBJECT(window), "destroy",G_CALLBACK (gtk_main_quit), NULL);
gtk_widget_set_size_request(window,300,300);
/*设置窗口的边框宽度*/
gtk_container_set_border_width(GTK_CONTAINER(window),5);
/**/
frames = gtk_frame_new(NULL);
gtk_container_add(GTK_CONTAINER(window),frames);
/*设置框架的标签*/
gtk_frame_set_label(GTK_FRAME(frames),"GTK Frame widget");
/*将标签定位在框架的右边*/
gtk_frame_set_label_align(GTK_FRAME(frames),1.0,0.0);
/*设置框架的风格*/
gtk_frame_set_shadow_type(GTK_FRAME(frames),GTK_SHADOW_OUT);
gtk_widget_show(frames);
gtk_widget_show(window);
/* 等待事件 (如键盘事件或鼠标事件) 的发生。*/
gtk_main ();
return 0;
}
编译:
gcc main.c -o main `pkg-config --libs --cflags gtk+-2.0`
或者
gcc main.c -o main `pkg-config gtk+-2.0 --cflags --libs gthread-2.0`
运行:
./main
结果: