Linux设计GUI

目录

 建立窗口:

按钮相关函数:

图片控件

信号与回调函数

常用布局

水平布局

固定布局

标签

行编辑器

控件添加:


控件是基本类型,GUI通过一个一个控件组装起来,形成不同的界面。

容器控件:容纳一个控件:窗口、按钮;容纳多个控件:布局控件。

非容器控件:不可以容纳别的控件:标签、行编辑。

GUI设计步骤:

1)创建主窗口,GUI界面如果是画,主窗口就像一张白纸。

2)创建布局容器。窗口只能放一个控件,而布局里可以放多个控件,可以使界面更丰富。

3)布局容器添加到窗口里。

4)创建所需控件。如按钮、行编辑、标签、图片。

5)控件添加到布局容器里。

6)显示所有控件。

窗口->布局(固定布局、表格布局)->各种控件

GTK程序的基本框架

 建立窗口:

新建窗口:

GtkWidget * window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

//创建新的控件—窗口,返回窗口指针。Gtk_Widget是控件类型

GtkWindowType是一个枚举,有两种情况:

            GTK_WINDOW_TOPLEVEL:有边框

            GTK_WINDOW_POPUP:   没边框

标题设置:

void gtk_window_set_title(GtkWindow *window, const gchar *title);

// window :窗口控件类型的指针;   title: 标题名称(字符串型)。

Ex :  gtk_window_set_title(window,”工程”);

窗口大小设置

void gtk_widget_set_size_request(GtkWidget *widget,gint width,gint height);

// 用来控件设置大小           (控件指针,整型宽,整型高)

控件显示/隐藏

gtk_widget_show_all(window);  //显示窗口全部控件,window:窗口控件

gtk_widget_hide_all(window); // 隐藏窗口全部窗口

按钮相关函数:

创建按钮(带有内容):

GtkWidget * gtk_button_new_with_label(const gchar *label);

// 返回按钮控件指针 注意:按钮只能添加一个控件,带标题后就没发添加图片

创建按钮(无内容)

GtkWidget * gtk_button_new();

获取按钮上的文本内容:

const gcahr * gtk_button_get_label(GtkButton *button);

//  返回字符型指针    button:传入按钮控件指针

创建带图标按钮

void gtk_button_set_image(GtkButton * button,GtkWidget * image);

GtkWidget * image = gtk_image_new_from(“1.jpg”);

// image:图像控件指针  

按钮背景色透明

void gtk_button_set_relief(GtkWidget *button ,GtkReliefStyle newstyle);

// newstyle : GTK_RELIEF_NONE 为透明。

图片控件

创建图片资源对象

GdkPixbuf * gdk_pixbuf_new_from_file(const gchar *filename, GError **error);

// filename: 图片路径    error:错误存储的指针

创建图像控件

GtkWidget * gtk_image_new_from_pixbuf(GdkPixbuf *pixbuf);

图片控件重新设置图片

void gtk_image_set_froma_pixbuf (GtkImage * image,GdkPixbuf * pixbuf);

清除控件里的图像数据

void gtk_image_clear(GtkImage * image);

信号与回调函数

窗口关闭时触发的常用信号:destroy(‘x’);

按钮触发常用信号 :pressed

信号连接回调函数写法:

Gulong g_signal_connect(gpointer instance,const gchar * detailed_signal,

GCallback c_handler,gpointer data );

// instance : 信号的发出者 detailed_signal :要连接的信号 ;c_handler:回调函数名称 ; data:传递给回调函数参数。

Ex: g_signal_connect(button,”pressed”,G_CALLBACK(callback),NULL);

回调函数定义:

void callback(GtkButton * button,gpointer user_data);//button :信号发出者; user_data :传递给回调函数的参数

常用布局

水平布局:GtkHBOX

垂直布局:GtkVBox

表格布局:GtkTable

固定布局:GtkFixed

水平布局

创建水平布局控件

GtkWidget * gtk_hbox_new(gboolean homogeneous,gint spacing);

// homogeneous : 是否大小一致  spacing: 控件之间的间隔

Ex:

GtkWidget *hbox = gtk_hbox_new(TRUE, 10);

把横向盒状容器放入窗口

添加控件到窗口容器控件中:

Gtk_container_add(GtkContainer * container,GtkWidget *widget);

Ex:

gtk_container_add(GTK_CONTAINER(window), hbox);//类型强转一下。

固定布局

创建固定布局容器控件

GtkWidget * gtk_fixed_new(void);

添加控件到固定布局容器中

void gtk_fixed_put(GtkFixed * fixed,GtkWidget * widget , gint x,gint y);

// fixed: 要容纳控件的容器;    widget:被容纳控件;x,y :起点坐标

其他类型布局及其相关介绍不多介绍。

标签

创建标签

GtkWidget * gtk_label_new(const gchar * str);

设置标签的内容:

void gtk_label_set_text(Gtklabel * label, const gcahr *str);

获取标签内容:

const gchar * gtk_label_get_label(GtkLabel * label);

行编辑器

创建行编辑

GtkWidget * gtk_entry_new(void);

获得文本内容

Const gchar* gtk_entry_get_text(GtkWidget * entry);

设置行编辑的内容

void gtk_entry_set_text(GtkWidget *entry, const gchar *text);

控件添加:

把控件添加到控件

void gtk_container_add(GtkContainer * container,GtkWidget * widget);

// container : 容器(要强制转换类型,将普通控件类型转换GTKCONTAINER)   widget :要添加的控件

完成一个APP界面,我们需要先建立窗口,窗口是一个顶层控件,其他东西都加到窗口里面。由于建立的构件是通用构件,需要将它转换为具体的类型以适合调用更为专用的函数。比如建立按钮构件函数会返回GtkWidget指针,但是专用的按钮子程序要求返回GtkButton指针,所以在调用专用的按钮函数以前,需要使用GTK_BUTTON宏将通用的GtkWidget指针转换为GtkButton指针。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值