包含头文件               #include

主函数                       main

环境初始化                gtk_init

创建窗口                   gtk_window_new

设置窗口属性            gtk_widget_set_size_request

                                  gtk_window_set_resizable

                                   gtk_window_set_title

                                   gtk_window_set_position

创建按钮                     gtk_button_new_width_label

将按钮放到窗口中去   gtk_container_add

显示窗口所有内容       gtk_widget_show_all

信号连接                      g_singnal_connect

主事件循环                  gtk_main

编辑运行                      gcc  xxx.c `pkg-config --cflags --libs gtk+-2.0`

#include <gtk/gtk.h>
#include <stdio.h>

void my_haha(GtkButton *button,gpointer user_data);

int main(int argc, char *argv[])
{
	//环境初始化
	gtk_init(&argc,&argv);
	//创建窗口
	GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	//设置窗口属性
	gtk_widget_set_size_request(window,600,400);
	gtk_window_set_resizable(GTK_WINDOW(window),FALSE);
	gtk_window_set_title(GTK_WINDOW(window),"first");
	gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER_ALWAYS);
	//创建一个按钮
	GtkWidget* button = gtk_button_new_with_label("请戳我");
	//将按钮放到窗口去
	gtk_container_add(GTK_CONTAINER(window),button);
	//显示这个窗口
	gtk_widget_show_all(window);
	//信号连接
	g_signal_connect(window,"destory",G_CALLBACK(gtk_main_quit),NULL);
	g_signal_connect(button,"pressed",G_CALLBACK(my_haha),"疼");
	//主事件循环
	gtk_main();//让这个窗口一直循环刷新,停在这个界面上等待信号
	return 0;
}
//gtk的强制类型转换:我们使用需求函数的前两个英文单词大写作为函数名称
//参数就是你要强转的变量
//返回值就是你的强转结果

void my_haha(GtkButton* button,gpointer user_data)
{
	//1、zhijiedayin
	printf("haha\n");
	//2、可以打印按钮上面的文本内容
	const char* haha = gtk_button_get_label(button);
	printf("%s\n",haha );
	//3、我们还可以打印传递给回电函数的参数
	printf("%s\n",(char *)user_data );
}

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐