zoukankan      html  css  js  c++  java
  • C语言学习(2)-GTK布局

    首先了解下gtk中函数的定义格式:

    记住下面几个格式看,下面的代码

    声明变量:GtkAbc*abc=gtk_abc_new()声明控件;

    赋值:gtk_abc_set_label(controlName,value);

    添加到父容器:gtk_container_add(controFather,controlChildl);

    显示控件:gtk_widget_show(controlName);

    一般默认值:gtk_box_pack_start()的后三个 值,一般为FALSE,FALSE,0

     

    1.盒子布局(垂直和水平)

    #include <stdio.h>
    #include<gtk/gtk.h>
    int main(int argc, char *argv[])
    {
        //初始化gtk
        gtk_init(NULL,NULL);
        //定义一个指向window的指针
        GtkWindow*window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
        //窗体关闭之后执行
        g_signal_connect(window,"destroy",gtk_main_quit,NULL);
        //设置标题
        gtk_window_set_title(window,"标题");
        //每个被添加的控件都要有show
        gtk_widget_show(window);
    
        //添加一个box,使用垂直布局
        //GTK_ORIENTATION_HORIZONTAL为水平布局
        GtkBox*box=gtk_box_new(GTK_ORIENTATION_VERTICAL,0);
        gtk_container_add(window,box);
        gtk_widget_show(box);
        
        GtkLabel*lb1=gtk_label_new("盒子布局");
        gtk_container_add(box,lb1);
        gtk_box_pack_start(box,lb1,FALSE,FALSE,0);
        gtk_widget_show(lb1);
    
        GtkEntry*entry1=gtk_entry_new();
        gtk_container_add(box,entry1);
        gtk_box_pack_start(box,entry1,FALSE,FALSE,0);
        gtk_widget_show(entry1);
    
        GtkButton*btn1=gtk_button_new();
        gtk_button_set_label(btn1,"按钮一");
        gtk_container_add(box,btn1);
        gtk_box_pack_start(box,btn1,FALSE,FALSE,0);
        gtk_widget_show(btn1);
    
        
        gtk_main();
        
        return 0;
    }

    运行结果如下

    image

    2.网格布局

    原理:

    gtk_grid_attach(grid1,btn1,1,2,3,4):
    grid1表示父容器;
    btn1表示被添加的控件;
    1表示该控件距离左边一个网格;
    2表示该控件距离上边两个网格;
    3表示该控件占据3个网格的宽度;
    4表示该控件占据4个网格的高度;

    记住几句话:

    1.网格布局的关键词是Grid
    2.gtk_button_set_label()表示赋值,赋值用 set_label()
    3.gtk_container_add()要在gtk_grid_attach()之后写
    4.所有新创建的控件,都要有show的方法
    5.如果涉及到布局,都要有附加到布局的方法
    #include <stdio.h>
    #include<gtk/gtk.h>
    int main(int argc, char *argv[])
    {
        gtk_init(NULL,NULL);
        GtkWindow*window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title(window,"网格布局");
        g_signal_connect(window,"destroy",gtk_main_quit,NULL);
        gtk_widget_show(window);
        //创建一个控件变量
        GtkGrid*grid1=gtk_grid_new();
       //添加到父容器
        gtk_container_add(window,grid1);
       //显示控件
        gtk_widget_show(grid1);
        
       //创建一个控件变量
        GtkButton*btn1=gtk_button_new();
       //为控件赋值
        gtk_button_set_label(btn1,"111111");
      //绑定到布局中
        gtk_grid_attach(grid1,btn1,1,1,1,1);
      //添加到父容器
        gtk_container_add(grid1,btn1);
      //显示控件
        gtk_widget_show(btn1);
        
       //创建一个空间变量
        GtkButton*btn2=gtk_button_new();
       //给该控件赋值
        gtk_button_set_label(btn2,"222222");
       //绑定到布局中
        gtk_grid_attach(grid1,btn2,0,0,1,1);
       //添加到父容器中
        gtk_container_add(grid1,btn2);
       //显示控件
        gtk_widget_show(btn2);
        
    
        gtk_main();    
        return 0;
    }

    运行结果如下图

    image

    今天,就写这么多了;我的目标并不高,希望每天写一篇,具体细节等学习深入了,再慢慢补充。

    更多精彩内容请看:http://www.cnblogs.com/2star
  • 相关阅读:
    姐姐的vue(1)
    LeetCode 64. Minimum Path Sum 20170515
    LeetCode 56. 56. Merge Intervals 20170508
    LeetCode 26. Remove Duplicates from Sorted Array
    LeetCode 24. Swap Nodes in Pairs 20170424
    LeetCode 19. Remove Nth Node From End of List 20170417
    LeetCode No.9 Palindrome Number 20170410
    LeetCode No.8. String to Integer (atoi) 2017/4/10(补上一周)
    LeetCode No.7 Reverse Integer 2017/3/27
    LeetCode No.4 Median of Two Sorted Arrays 20170319
  • 原文地址:https://www.cnblogs.com/kimisme/p/4192515.html
Copyright © 2011-2022 走看看