布局容器之固定布局

前面我们学习的水平、垂直和表格布局容器,控件会跟着容器大小的变化进行自动适应,而固定布局容器里的控件则不会跟着变化( 则固定不变 )。

固定布局的创建:

GtkWidget *gtk_fixed_new(void);

返回值:固定布局容器指针

固定布局容器添加控件:

void gtk_fixed_put(

GtkFixed *fixed,

GtkWidget *widget,

gint x,

gint y );

fixed:容纳控件的容器

widget:要添加的控件

x, y:控件摆放位置的起点坐标,如下图:

设置控件的大小( 宽和高 ):

void gtk_widget_set_size_request(

GtkWidget *widget,

gint width,

gint height );

widget:需要设置的控件

width:宽度

height:高度

移动固定布局里控件的位置:

void gtk_fixed_move(

GtkFixed *fixed,

GtkWidget *widget,

gint x,

gint y);

fixed:固定布局容器

widget:需要移动的控件

x, y: 移动的位置

完整代码如下:

#include <gtk/gtk.h> 

int main( int   argc, char *argv[] )
{
	gtk_init (&argc, &argv); 	// 初始化

	GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL); 	 // 创建窗口 

	GtkWidget *fixed = gtk_fixed_new(); 	//创建一个固定容器
	gtk_container_add(GTK_CONTAINER (window), fixed); // 固定放进窗口

	GtkWidget *button1 = gtk_button_new_with_label("^_^");  // 创建按钮
	gtk_fixed_put(GTK_FIXED(fixed), button1, 0, 0); // 按钮添加到固定布局

	GtkWidget *button2 = gtk_button_new_with_label("@[email protected]");  // 创建按钮
	gtk_fixed_put(GTK_FIXED(fixed), button2, 0, 0); // 按钮添加到固定布局

	gtk_fixed_move(GTK_FIXED(fixed), button2, 150, 150); // 移动控件的位置

	gtk_widget_set_size_request(button2, 100, 50); // 设置控件的大小

	gtk_widget_show_all(window);  // 显示所有控件

	gtk_main();  //进入事件循环 

	return 0;
} 

程序运行效果图,如下:

源代码下载请点此处。

时间: 2024-12-17 22:40:39

布局容器之固定布局的相关文章

GTK入门学习:布局容器之固定布局

前面我们学习的水平.垂直和表格布局容器,控件会跟着容器大小的变化进行自动适应,而固定布局容器里的控件则不会跟着变化( 则固定不变 ). 固定布局的创建: GtkWidget *gtk_fixed_new(void); 返回值:固定布局容器指针 固定布局容器添加控件: void gtk_fixed_put( GtkFixed *fixed, GtkWidget *widget, gint x, gint y ); fixed:容纳控件的容器 widget:要添加的控件 x, y:控件摆放位置的起点

GTK入门学习:布局容器之水平布局

如果我们希望窗口里多放添加几个控件,直接添加是不成功的,因为窗口只能容纳一个控件的容器.这时候,我们需要借助布局容器,我们先把布局容器添加到窗口里,然后再把所需要添加的控件放在布局容器里. 布局容器的主要分类:水平布局( GtkHBox).垂直布局(GtkVBox ).表格布局(GtkTable).固定布局(GtkFixed ). 水平布局容器: 水平布局容器的创建: GtkWidget *gtk_hbox_new( gboolean homogeneous, gint spacing ); h

布局容器之表格布局

学习水平和垂直布局容器后,我们几乎能布出任何风格的布局,只需要嵌套使用水平布局容器和垂直布局容器即可.假如我们要完成下图的布局,我们该怎么做呢? 1)创建一个垂直布局容器( A ) 2)创建一个水平布局容器( B ),一个close按钮( C ) 3)将水平布局容器和close按钮添加到垂直布局容器里( 将 B 和 C 添加到 A ) 4)创建button 1按钮( D ) 和 button 2按钮( E ) 5)再将button 1按钮 和 button 2按钮添加到水平布局容器里( 将 D

GTK入门学习:布局容器之表格布局

学习水平和垂直布局容器后,我们几乎能布出任何风格的布局,只需要嵌套使用水平布局容器和垂直布局容器即可.假如我们要完成下图的布局,我们该怎么做呢? 1)创建一个垂直布局容器( A ) 2)创建一个水平布局容器( B ),一个close按钮( C ) 3)将水平布局容器和close按钮添加到垂直布局容器里( 将 B 和 C 添加到 A ) 4)创建button 1按钮( D ) 和 button 2按钮( E ) 5)再将button 1按钮 和 button 2按钮添加到水平布局容器里( 将 D

GTK入门学习:布局容器之垂直布局

垂直布局和水平布局的用法基本是一样,无非是新建垂直布局容器接口,还有控件摆放的方向不同. 垂直布局容器的创建: GtkWidget *gtk_vbox_new( gboolean homogeneous, gint spacing ); 完整代码如下: #include <gtk/gtk.h> int main(int argc, char *argv[]) { //1.gtk初始化 gtk_init(&argc, &argv); //2.创建一个窗口 GtkWidget *w

零元学Expression Blend 4 - Chapter 8 用实例了解布局容器系列-「Grid」

原文:零元学Expression Blend 4 - Chapter 8 用实例了解布局容器系列-「Grid」 本系列将教大家以实做案例认识Blend 4 的布局容器,此章介绍的是Blend 4 里的布局容器大哥-「Grid」. ? 本系列将教大家以实做案例认识Blend 4 的布局容器,此章介绍的是Blend 4 里的布局容器大哥-「Grid」. ? ? ? 就是要让不会的新手都看的懂! ? ? ? <实至名归的容器大哥> Blend 4内的容器有很多种,比较常运用到的除了有Grid.Can

WPF 10天修炼 - WPF布局容器

WPF布局 WPF的窗口也就是Window类,是一个内容控件,该控件派生自ContentControl.内容控件有一个Content属性,该属性有一个限制,只能放置一个用户界面元素,或一个字符串.为了在窗口上放置多个界面控件,通常在窗口上放置一个容器控件. WFP布局原则 1.  元素不应该指定 确定的尺寸大小,同很惨更应该使其大小自动适应内容.比如按钮根据所添加的文本来扩展其大小.可以通过设置maximun和minimun尺寸来限制控件可接受的尺寸大小. 2.  元素不应该使用屏幕坐标来指定其

网页布局之---固定布局、流动布局、弹性布局(转)

原文地址 有一个问题已经困扰网页设计师们很久了:该使用固定.流动.弹性,还是混合布局呢?它们各有优缺点.最终的决定取决于网站的可用性,单用某一种布局就想达到目的,可能没那么容易.那么,既然如此令人困惑,是否有做出正确决定的诀窍呢?考虑好几个问题,恰当地设定目标结果,你也能做出融合各方优点的成功布局设计. 为什么要争论这些?网页设计受可用性的大棒指引,而由于网站用户的多样性,已经很难做出对不同用户都有足够可用性的网站. 当设计的网站会面向众多用户时,设计师必须考虑访客之间的下列潜在差异: 屏幕分辨

学习WPF1.2——WPF布局——了解布局容器

WPF布局工作内部原理 WPF渲染布局时主要执行了两个工作:测量和排列 测量阶段,容器遍历所有子元素,并询问子元素所期望的尺寸 排列阶段,容器在合适的位置放置子元素,并设置元素的最终尺寸 这是一个递归的过程,界面中任何一个容器元素都会被遍历到 WPF布局容器的继承机制 DispatcherObject WPF应用程序使用单线程亲和模型(STA:Single-Thread Affinity),这意味着整个用户界面都为单个线程拥有,同时也意味着从另一个线程与用户界面元素交互是不安全的,但有很多情况下