Gtk+的布局(Layout) 一、垂直、水平布局(源代码)

5 篇文章 0 订阅
3 篇文章 0 订阅

//源码文件SimpleHLayout.c

#include <gtk/gtk.h>

 

GtkWidget *wnd;//窗口构件

GtkWidget *hbox;//水平盒装容器构件

GtkWidget *btn1,*btn2,*btn3;//三个按钮构件

 

void ui_init()

{

  //创建窗口

  wnd = gtk_window_new(GTK_WINDOW_TOPLEVEL);

  //设置窗口的标题栏文字

  gtk_window_set_title(GTK_WINDOW(wnd),"Simple HLayout");

  //设置窗口出现的位置

  gtk_window_set_position(GTK_WINDOW(wnd),GTK_WIN_POS_CENTER);

 

  //创建一个不平均分配区域的水平盒装容器

  hbox = gtk_hbox_new(FALSE,2);

  //hbox = gtk_hbox_new(TRUE,2);

  //创建btn1,btn2,btn3三个按钮构件

  btn1 = gtk_button_new_with_label("button1");

  btn2 = gtk_button_new_with_label("button2button2button2");

  btn3 = gtk_button_new_with_label("button3button3");

  //将三个按钮构件按照不同的方式放置在hbox容器中

  gtk_box_pack_start(GTK_BOX(hbox),btn1,FALSE,TRUE,2);

  //gtk_box_pack_start(GTK_BOX(hbox),btn1,TRUE,TRUE,2);

  gtk_box_pack_start(GTK_BOX(hbox),btn2,TRUE,TRUE,2);

  gtk_box_pacl_start(GTK_BOX(hbox),btn3,TRUE,FALSE,2);

 

  //将hbox容器放在窗口中

  gtk_container_add(GTK_CONTAINER(wnd),hbox);

  //显示窗口中的所有构件

  gtk_widget_show_all(wnd);

}

 

int main(int argc,char *argv[])

{

  gtk_init();

 

  ui_init();

 

  g_signal_connect(G_OBJECT(wnd),"destroy",G_CALLBACK(gtk_main_quit),NULL);

  gtk_main();

  return 0;

}

 

源代码中下面这两句注释的代码,可以替换相对应的代码,编译后查看窗口有些什么变化

//hbox = gtk_hbox_new(TRUE,2);

//gtk_box_pack_start(GTK_BOX(hbox),btn1,TRUE,TRUE,2);

 

//编译文件makefile

CC=gcc

OFLAG=-o

GFLAG=-g

GTK=`pkg-config --cflags --libs gtk+-2.0`

FILENAME=SimpleHLayout

CFILENAME=SimpleHLayout.c

DEBUGFILENAME=SimpleHLayout.debug

$(FILENAME):$(CFILENAME)

  $(CC) $(OFLAG) $(FILENAME) $(CFILENAME) $(GTK)

  $(CC) $(OFLAG) $(DEBUGFILENAME) $(CFILENAME) $(GFLAG) $(GTK)

 

//图片

初始界面(初始界面)

 

拖动后的窗口,比较btn1,btn2,btn3

btn1的可扩展为FALSE,那么窗口变大的时候btn1的宽度保持不变

btn2既可扩展也可填充,那么窗口变大的时候btn2跟着窗口的变化而变化

btn3的可填充为FALSE,那么窗口变大的时候btn3不能填充它所在的区域

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值