Chinaunix首页 | 论坛 | 博客
  • 博客访问: 95234
  • 博文数量: 46
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 505
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-22 19:56
文章分类
文章存档

2008年(46)

我的朋友

分类: C/C++

2008-06-12 21:43:27

window上进行gui编程我首选会用mfc进行,当然也可以使用qt或者是gtk库进行gui开发;在linux上mfc肯定不能使用了,qt由于版权和商业化的问题不好使用,所以就只好使用gtk库了。该库用c语言编写,原则上可以绑定很多编程语言,但是linux上当然用c语言了。
gtk库是一个完全的界面开发库,所有功能都是为了开发界面的,这点不像mfc有很多开发功能。使用gtk进行界面开发与使用mfc或者是使用java开发gui差不多,都是使用各种控件和处理控件的信号了。所有控件都是使用GdtWindow * 来定义的。
  #include// 该头文件将gtk所有的其他头文件都include进去了,
  gtk_init(&argc, &argv); // 初始化gtk命令行参数
  gtk_main() // gtk主循环 就相当于window里面的消息循环
 这几行代码是每个gtk程序都要的。
1. 窗口
  GtkWidget * window;
  window=gtk_window_new(GTK_WINDOW_TOPLEVEL| GTK_WINDOW_POPUP);
  gtk_widget_show(window);
  窗口控件是一个container (container有2种,一种是只能放一个控件的container,另一种是只能放多个控件的container,窗口控件属于后者)
gtk_window_set_title(GTK_WINDOW(window),"标题"); // 设置窗口标题
gtk_window_set_default_size(GTK_WINDOW(window),宽,高); //设置窗口大小
gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER)// 设置窗口显示的位置
窗口控件的信号  delete_event  信号的处理函数 gtk_main_quit()  //gtk库已经定义好了。
通过g_signal_connect(G_OBJECT(控件对象), 信号,G_CALLBACK(信号处理函数,转化为回调函数),NULL)设置某个控件对象对某个信号的处理函数。
 
2. 盒状容器:
   GtkBox分为GtkHBox(横向盒装容器)和GtkVBox(纵向盒装容器)
   GtkWidget *box;
   box=gtk_hbox_new(false(容器中的控件不均匀放置),0(控件间的间隔));
   gtk_box_pack_start(容器对象指针,控件对象指针,是否要扩展,是否要填充间隔,间隔);
 
3. 格状容器
    盒装容器只能放一行或者是一列的控件,如果要放多行多列控件可以在盒装容器中放入盒装容器,或者是使用格状容器。
 
4. 框架控件
   GtkWidget *frame=gtk_frame_new("")
 
5. 按钮控件:
 普通按钮控件:
  GtkWidget *button;
  button=gtk_button_new_label("按钮的label");
  g_signal_connect(GTK_BUTTON(button),"clicked",G_CALLBACK(on_button_clicked),(gpoint)传给回调函数的参数);
  gtk_container_add(GTK_CONTAINER(window),button);
  gtk_widget_show(button);
 按钮控件的信号 clicked,信号在glib中已经定义好了,不能变。
 信号的处理函数0n_button_clicked(),函数名可以变的,需要自己定义了。
 
6. 标签控件:
GtkWidget *label=gtk_label_new("")
 
 
 
 
 
阅读(1531) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~