GTK3学习笔记2 Hello World in GTK+
来源:互联网 发布:手机淘宝无响应怎么办 编辑:程序博客网 时间:2024/06/06 04:08
上节讲了在Windows上建立GTK3的codeblocks开发环境,这节讲Example 1. Hello World in GTK+。
例子很简单,实现了窗口和一个普通按钮,效果如图:
源代码如下,有很简单的英文注释,容易看懂,就不翻译了:
#include <gtk/gtk.h>/* 下面是两个回调函数 */static void print_hello (GtkWidget *widget, gpointer data){ g_print ("Hello World\n");}static gboolean on_delete_event (GtkWidget *widget, GdkEvent *event, gpointer data){ /* If you return FALSE in the "delete_event" signal handler, * GTK will emit the "destroy" signal. Returning TRUE means * you don't want the window to be destroyed. * * This is useful for popping up 'are you sure you want to quit?' * type dialogs. */ g_print ("delete event occurred\n"); return TRUE;}int main (int argc, char *argv[]){ /* GtkWidget is the storage type for widgets */ GtkWidget *window; GtkWidget *button; /* This is called in all GTK applications. Arguments are parsed * from the command line and are returned to the application. */ gtk_init (&argc, &argv); /* create a new window, and set its title */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "Hello"); /* When the window emits the "delete-event" signal (which is emitted * by GTK+ in response to an event coming from the window manager, * usually as a result of clicking the "close" window control), we * ask it to call the on_delete_event() function as defined above. * * The data passed to the callback function is NULL and is ignored * in the callback function. */ g_signal_connect (window, "delete-event", G_CALLBACK (on_delete_event), NULL); /* Here we connect the "destroy" event to the gtk_main_quit() function. * * This signal is emitted when we call gtk_widget_destroy() on the window, * or if we return FALSE in the "delete_event" callback. */ g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); /* Sets the border width of the window. */ gtk_container_set_border_width (GTK_CONTAINER (window), 10); /* Creates a new button with the label "Hello World". */ button = gtk_button_new_with_label ("Hello World"); /* When the button receives the "clicked" signal, it will call the * function print_hello() passing it NULL as its argument. * * The print_hello() function is defined above. */ g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL); /* The g_signal_connect_swapped() function will connect the "clicked" signal * of the button to the gtk_widget_destroy() function; instead of calling it * using the button as its argument, it will swap it with the user data * argument. This will cause the window to be destroyed by calling * gtk_widget_destroy() on the window. */ g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window); /* This packs the button into the window. A GtkWindow inherits from GtkBin, * which is a special container that can only have one child */ gtk_container_add (GTK_CONTAINER (window), button); /* The final step is to display this newly created widget... */ gtk_widget_show (button); /* ... and the window */ gtk_widget_show (window); /* All GTK applications must have a gtk_main(). Control ends here * and waits for an event to occur (like a key press or a mouse event), * until gtk_main_quit() is called. */ gtk_main (); return 0;}
下篇博客起,文章长度会增加,对于一些函数将会进行相对详细的中文介绍。
其实GTK3和GTK2的很多基础的函数没有变动,可以参照中文的GTK2教程来阅读官网的GTK3教程,我的博客只是抛砖引玉哈哈,这篇就写到这。
1 0
- GTK3学习笔记2 Hello World in GTK+
- Hello World学习笔记
- gtk编程Hello World
- Nebula3学习笔记(2): Hello World
- struts2学习笔记2-strut2 hello world
- LLD3学习笔记(2) hello world
- angular 2 学习笔记 1--Hello world
- GTK3学习笔记 番外1 在windows下给gtk程序打包
- 学习使用GTK+ 2.GTK+“Hello World”——对GTK+运作机制的通俗介绍
- [C学习笔记].Hello World
- Jquery学习笔记:Hello World
- xlib学习笔记-hello world
- Spring学习笔记 Hello World
- DWR学习笔记 - Hello World
- 【ruby学习笔记】Hello World
- WebService学习笔记-Hello world
- JQuery学习笔记-Hello world
- SpringMVC学习笔记-Hello world
- struct module结构体 和 THIS_MODULE详解
- DNV.Leak.v3.2 1CD 石油化工装置事故发生的频率计算
- TecPlot.RS.2013.R2.Win32_64 2CD流体动力学(CFD)模拟/油藏数值模拟预测
- LaTeX设置相关
- halcon11 halcon11.0.1 全功能完美无限制版本带视频教程/中文全功能 最全资料
- GTK3学习笔记2 Hello World in GTK+
- MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践
- Navigation Drawer(导航抽屉)
- Linux写时拷贝技术(copy-on-write)
- UVA - 1323 Vivian's Problem
- 织梦 无法更换文章缩略图与文章编辑器不能粘贴
- xp使用4G内存方法
- Grenander.Software.Workshop.LoudSpeaker.Lab.v3.1.3 1CD(专业级的音箱设计软件)
- HTTP 协议详解