GTK编程初谈
来源:互联网 发布:yum install telnet 编辑:程序博客网 时间:2024/05/17 22:50
GTK编程初谈
分类: 应用编程2007-08-22 22:25 6119人阅读 评论(8) 收藏 举报
gtk编程callbackmakefilesignalbutton
GTK是一个跨平台的GUI开发库, 它是用C语言以OO的方式(俗称面向对象C, 又称OO-C)开发的. 只要是有一定C语言和GUI开发基础, 用GTK是一件很简单的事.
1. 安装与配置:
由于我使用的是Ubuntu Linux, 重点只介绍Ubuntu下的GTK开发库安装方法:
sudo apt-get install vim-full ;我是vi的忠实用户, 当然你也可以选择emacs或者其他编辑器
sudo apt-get install build-essential ;安装编译环境, 包括gcc/gdb/make等工具
sudo apt-get install gnome-core-devel ;安装gtk和glib的开发库
sudo apt-get install pkg-config ;这是个flag和lib查找工具, 会在编译时自动找到头文件和库的位置
sudo apt-get install dev-help ;安装文档查看工具dev-help
sudo apt-get install libglib2.0-doc libgtk2.0-doc ;安装gtk和glib的开发文档
2. 实例:
这几行代码很简单, 主要有几个关键:
3. 编译:
我用一个makefile来展示编译命令.
用`......`引用pkg-config实现参数的flags.
在编译时只需要在终端下执行make命令, 就会在目录下生成test可执行的elf文件.
4. 总结:
GTK编程就像上面举的例子一样, 很简单. 具体的函数使用方法请参见dev-help中的gtk+帮助文档.
1. 安装与配置:
由于我使用的是Ubuntu Linux, 重点只介绍Ubuntu下的GTK开发库安装方法:
sudo apt-get install vim-full ;我是vi的忠实用户, 当然你也可以选择emacs或者其他编辑器
sudo apt-get install build-essential ;安装编译环境, 包括gcc/gdb/make等工具
sudo apt-get install gnome-core-devel ;安装gtk和glib的开发库
sudo apt-get install pkg-config ;这是个flag和lib查找工具, 会在编译时自动找到头文件和库的位置
sudo apt-get install dev-help ;安装文档查看工具dev-help
sudo apt-get install libglib2.0-doc libgtk2.0-doc ;安装gtk和glib的开发文档
2. 实例:
#include <gtk/gtk.h>
int main(int argc, char *argv[])
{
/* A window and a button */
GtkWidget *win, *btn;
/* Initialize GTK */
gtk_init(&argc, &argv);
/* New a window and a button */
win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
btn = gtk_button_new_with_label("Close yourself");
/* Add button to window container */
gtk_container_add(GTK_CONTAINER(win), btn);
/* Connect "close" and button to quit op */
g_signal_connect(win, "destroy", G_CALLBACK(gtk_main_quit), NULL);
g_signal_connect(btn, "clicked", G_CALLBACK(gtk_main_quit), NULL);
/* Show all in the window */
gtk_widget_show_all(win);
/* Main loop, wait for signals */
gtk_main();
return 0;
}
上面的程序为main.c, 它所完成的功能就是创建一个窗口(window), 在窗口中添加一个按钮(button), 点击这个button或者是窗口的关闭按钮, 就会实现窗口的关闭, 并使程序结束.int main(int argc, char *argv[])
{
/* A window and a button */
GtkWidget *win, *btn;
/* Initialize GTK */
gtk_init(&argc, &argv);
/* New a window and a button */
win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
btn = gtk_button_new_with_label("Close yourself");
/* Add button to window container */
gtk_container_add(GTK_CONTAINER(win), btn);
/* Connect "close" and button to quit op */
g_signal_connect(win, "destroy", G_CALLBACK(gtk_main_quit), NULL);
g_signal_connect(btn, "clicked", G_CALLBACK(gtk_main_quit), NULL);
/* Show all in the window */
gtk_widget_show_all(win);
/* Main loop, wait for signals */
gtk_main();
return 0;
}
这几行代码很简单, 主要有几个关键:
- GtkWidget: 创建一个窗口和一个按钮. GTK中的控件都要用GtkWidget类型创建.
- gtk_init(): 对程序用命令行参数进行初始化.
- gtk_xxx_new(): 新建xxx类型的控件
- gtk_container_add(): 把控件添加到container容器中, 在这里是把按钮添加到窗口中.
- g_signal_connect(): 把GTK控件对应的操作信号, 连接到CALLBACK函数上.
- gtk_widget_show_all(): 显示窗口.
- gtk_main(): 开始main loop, 等待信号触发事件.
3. 编译:
我用一个makefile来展示编译命令.
# Target, compiler and objects.
EXEC = test
CC = gcc
OBJ = main.o
# Use for compile.
CFLAGS = `pkg-config --cflags gtk+-2.0`
# Use for link.
CLIBS = `pkg-config --libs gtk+-2.0`
$(EXEC): $(OBJ)
$(CC) -o $@ $^ $(CLIBS)
main.o: main.c
$(CC) -c $< $(CFLAGS)
clean:
rm $(EXEC) *.o
这里于普通的makefile不同的地方是CFLAGS和CLIBS两个变量, 分别用于编译和链接.EXEC = test
CC = gcc
OBJ = main.o
# Use for compile.
CFLAGS = `pkg-config --cflags gtk+-2.0`
# Use for link.
CLIBS = `pkg-config --libs gtk+-2.0`
$(EXEC): $(OBJ)
$(CC) -o $@ $^ $(CLIBS)
main.o: main.c
$(CC) -c $< $(CFLAGS)
clean:
rm $(EXEC) *.o
用`......`引用pkg-config实现参数的flags.
在编译时只需要在终端下执行make命令, 就会在目录下生成test可执行的elf文件.
4. 总结:
GTK编程就像上面举的例子一样, 很简单. 具体的函数使用方法请参见dev-help中的gtk+帮助文档.
转载地址:http://blog.csdn.net/dai_weitao/article/details/1755111
- GTK编程初谈
- GTK编程初谈
- GTK编程初谈
- 转GTK编程初谈
- GTK 编程
- GTK编程
- Gtk+国际化编程
- GTK图形编程
- GTK+图形界面编程
- GTK 编程基本步骤
- GTK+编程应用--日历
- gtk编程Hello World
- gtk编程笔记 1
- gtk编程笔记 2
- gtk 编程笔记 3
- GTK编程入门
- GTK编程基础------对话框
- GTK编程:获取屏幕分辨率
- 外观模式lua实现
- 逃离北京回家创业--团队组建篇
- 如何调用Android隐藏API
- JAVA系列-设计模式-中介者模式
- C# 索引器
- GTK编程初谈
- IOS的后台运行
- 红薯 Windows 下使用 GNUstep 编译并运行 Objective-C 程序
- 【装机吧】Win7电脑系统32位和64位区别(详细版)
- Hay Day系统设计沉思录——操作序列与网络
- 人事和程序员分别是怎样读简历的
- C++ - 类的赋值操作 使用 "复制-交换(copy and swap) 技术" 详解
- 论DWR在Java Web快速开发中的重要性
- 【库函数】linux之getuid和getpwuid函数