TA的每日心情 | 奋斗 2015-10-16 12:17 |
---|
签到天数: 401 天 连续签到: 1 天 [LV.9]以坛为家II
|
楼主 |
发表于 2013-8-30 01:45:25
|
显示全部楼层
本帖最后由 白浪 于 2013-8-30 02:34 编辑
为了讲解点一些常用的用法,本节插讲一些关于布局和容器的知识。以后会有专门的章节讲解,本节只是简单的讲解GtkFixed(固定容器构件)。 GtkFixed允许将构件放在窗口的固定位置。这个位置是相对窗口的左上角的,构件的位置可以动态改变。一般来说,用GtkFixed为构件定位不怎么可取,因为窗口大小有变化时,构件并不能实时的适应窗口尺寸的变化。
在这里只是简单的讲解一下,gtk_fixed_new函数用于创建新的GtkFixed. gtk_fixed_put函数将构件放在指定位置。gtk_fixed_move函数将指定的构件移动到新的位置。
如图所示,以下代码将togglebutton放在了相对左上角坐标为20,20的位置上- #include <gtk/gtk.h>
- int main (void)
- {
- GtkWidget *window = NULL;
- //GtkWidget *label = NULL;
- GtkWidget *fixed = NULL;
- GtkWidget *button = NULL;
- // 初始化 GTK
- gtk_init(NULL, NULL);
- // 建立一個新的 GtkWindow
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- //建立一个新的label
- button = gtk_toggle_button_new_with_label ("press to change the label");
- //label = gtk_label_new ("this is a \n label to test!");
- fixed=gtk_fixed_new();
- gtk_fixed_put(GTK_FIXED(fixed),button,20,20);
- //gtk_fixed_put(GTK_FIXED(fixed),label,20,40);
- // 設置標題
- gtk_window_set_title (GTK_WINDOW (window), "Window");
- // 設置默認大小
- gtk_window_set_default_size (GTK_WINDOW (window), 300, 200);
- //将label放置到window容器中
- gtk_container_add(GTK_CONTAINER(window),fixed);
- // 處理 "destroy" 信號,當窗口被關閉時退出程序
- g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
- // 顯示窗口和所有子組件
- gtk_widget_show_all (window);
- // 開始事件循環
- gtk_main ();
- // gtk_main_quit 會導致 gtk_main 退出,於是程序結束
- return 0;
- }
复制代码 下面我们结合上一节的togglebutton,在窗口上放置一个togglebutton 跟一个label,当togglebutton被按下时,将标签改成button pressed,弹起时,将标签改成button raised .- #include <gtk/gtk.h>
- GtkWidget *label = NULL;
- void button_toggled(GtkWidget *widget,gpointer *data)
- {
- //在终端中打印
- if(gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(widget))==TRUE)
- gtk_label_set_text(GTK_LABEL(label),"button pressed!");
- else
- gtk_label_set_text(GTK_LABEL(label)," button raised!");
- }
- int main (void)
- {
- GtkWidget *window = NULL;
- //GtkWidget *label = NULL;
- GtkWidget *fixed = NULL;
- GtkWidget *button = NULL;
- // 初始化 GTK
- gtk_init(NULL, NULL);
- // 建立一個新的 GtkWindow
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- //建立一个新的label
- button = gtk_toggle_button_new_with_label ("press to change the label");
- label = gtk_label_new ("label");
- fixed=gtk_fixed_new();
- gtk_fixed_put(GTK_FIXED(fixed),button,20,20);
- gtk_fixed_put(GTK_FIXED(fixed),label,20,80);
- // 設置標題
- gtk_window_set_title (GTK_WINDOW (window), "Window");
- // 設置默認大小
- gtk_window_set_default_size (GTK_WINDOW (window), 300, 200);
- //将label放置到window容器中
- gtk_container_add(GTK_CONTAINER(window),fixed);
- // 處理 "destroy" 信號,當窗口被關閉時退出程序
- g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
- g_signal_connect (button, "toggled", G_CALLBACK (button_toggled), NULL);
- // 顯示窗口和所有子組件
- gtk_widget_show_all (window);
- // 開始事件循環
- gtk_main ();
- // gtk_main_quit 會導致 gtk_main 退出,於是程序結束
- return 0;
- }
复制代码 作业:如下图所示,当按下+键时,右边的label加1,按下-键时,label减1
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?马上加入
x
|