GTK+图形界面库学习

1 篇文章 0 订阅

#include <gtk/gtk.h>

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

{

       //初始化

       gtk_init(&argc, &argv);//取地址就是为了更改里面的内容

       //创建一个窗口

       GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

       //gtk控件指针  窗口   gtk  窗口 新建         顶置

       gtk_widget_show_all(window);

 

       //主事件循环

       gtk_main();

       return 0;

}

******************************************************************************************************************************************

在编译的过程中,使用的方式为gcc 01_first_window.c `pkg-config --cflags --libs gtk+-2.0`

使用./a.out进行运行

由于在代码中并没有告诉他,点击小叉叉是退出程序,因此点了×也不能退出程序

信号链接:g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);

              gtk 信号   连接    谁发出的信号  什么信号   发出了信号做什么事情   你要做事前传递的参数

标题的设置

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

       gtk   窗口  设置  标题     给哪个窗口设置    设置成什么

gtk中的控件类型转换

使用函数进行转换  函数名为大写的你的类型 如:GTK_WINDOW(window)

窗口最小大小的设置

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

       gtk   控件  设置  大小            你要给谁设置       宽         高

窗口伸缩设置( FALSE为不可伸缩 )

       void gtk_window_set_resizable(GtkWindow *window, gboolean resizable);

            gtk 窗口  设置              给谁设置          布尔类型的   

显示或隐藏所有控件

  void gtk_widget_show_all(GtkWidget *widget);

  void gtk_widget_hide_all(GtkWidget *widget);

 窗口在显示器位置的设置

       void gtk_window_set_position(

                     GtkWindow *window,

                     GtkWindowPosition position);

       position常用有4种情况:

       GTK_WIN_POS_NONE:  不固定

       GTK_WIN_POS_CENTER: 居中

       GTK_WIN_POS_MOUSE:  出现在鼠标位置

       GTK_WIN_POS_CENTER_ALWAYS: 窗口总是居中

******************************************************************************************************************************************

----------------------按钮-----------------------

控件的分类:容器控件,非容器控件。

它可以容纳别的控件。容器控件分为两类,一类只能容纳一个控件,如窗口,按钮;另一类能容纳多个控件,如布局控件。

创建一个带内容的按钮

       GtkWidget *gtk_button_new_with_label(const gchar *label );

返回值为控件指针   gtk按钮  新建 带有 文本      你要带有什么内容

把控件添加到窗口容器里

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

container:容纳控件的容器;widget:要添加的控件

 

 获得按钮上面的文本内容

       const gchar *gtk_button_get_label(GtkButton *button );

返回值为按钮上的内容  gtk按钮  获得 文本    你要获得哪个按钮上的

***********************************************************************************************************************************************

-----------------------布局-----------------------

创建水平布局容器

       GtkWidget*gtk_hbox_new(gboolean homogeneous, gint spacing);

     控件     gtk  水平布局 新建    是否均匀排      每个间隔                                             

       homogeneous:容器内控件是否均衡排放(大小一致)

       spacing:    控件之间的间隔

添加控件到布局容器中

       gtk_container_add(GtkContainer*container, GtkWidget *widget );

创建垂直布局容器:

gtk_vbox_new()

标签的创建

       GtkWidget *gtk_label_new(const gchar *str);

设置标签的内容

       void gtk_label_set_text(GtkLabel *label, const gchar *str);

获得标签的内容

       const gchar *gtk_label_get_label(GtkLabel *label );

**************************************************************************************************************************************************************

GTK使用方法:

1.包含头文件

2.GTK环境初始化

3.创建一个新的窗口

4.给窗口进行设置

5.新建一个容器控件

6.将容器控件放入窗口

7.创建一个新的控件

8.将控件放入容器控件中

9.信号连接12

10.显示窗口上的所有控件

11.主事件循环

12.写回调函数

 

1.全局变量

GtkWidget* label1;

GtkWidget* label2;

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

{

       label1 = gtk_label_new("haha");

       haha();

       return 0;

}

int haha()

{

       char *he = gtk_label_get_label(label1);

}

2.组成结构体,传参为结构体

 

-------------------常出现的问题-----------------

如果编译的时候显示找不到xxxx,说明你敲错了。

连接库的时候是`不是'

如果说了,有游离就是有中文字符

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

甜航一直在

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值