原来以为gtk只能是C语言用,c++的话还是用Qt的GUI,今天无聊试了一下,原来c++也可以用gtk。

Demo.cpp内容个如下:

#include<iostream>
#include<string>
#include<cstring>
#include<cmath>
#include<complex>
#include<algorithm>
#include<vector>
#include<utility>
#include<cstddef> /*size_t*/
#include<bitset>
#include<assert.h>
#include<cstdlib>//abort()
#include<list>
#include<map>
#include<deque>
#include<set>
#include<iterator>#include<gtk/gtk.h>
using namespace std;GtkWidget *file,*_vel,*_deta,*_epsilu;void file_OK( GtkWidget *w, gpointer *data )
{gtk_entry_set_text (GTK_ENTRY (data),gtk_file_selection_get_filename (GTK_FILE_SELECTION (file)));gtk_widget_destroy (file);
}
void select_file(GtkWidget *w,gpointer *data)
{file= gtk_file_selection_new ("File selection");g_signal_connect (G_OBJECT (GTK_FILE_SELECTION (file)->ok_button), "clicked",G_CALLBACK (file_OK), data);g_signal_connect_swapped (G_OBJECT (GTK_FILE_SELECTION (file)->cancel_button), "clicked",G_CALLBACK (gtk_widget_destroy), NULL);gtk_widget_show (file);
}
/* 创建一个新的横向盒,它包含一个图像和一个标签,并返回这个盒。*/
GtkWidget *xpm_label_box( gchar *xpm_filename, gchar *label_text )
{GtkWidget *box;GtkWidget *label;GtkWidget *image;
/* 为图像和标签创建盒 */box = gtk_hbox_new (FALSE, 0);gtk_container_set_border_width (GTK_CONTAINER (box), 10);
/* 创建一个图像 */image = gtk_image_new_from_file (xpm_filename);
/* 为按钮创建一个标签 */label = gtk_label_new (label_text);
/* 把图像和标签组装到盒子里 */gtk_box_pack_start (GTK_BOX (box), image, TRUE, TRUE, 3);gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 3);gtk_widget_show (image);gtk_widget_show (label);return box;
}int main(int argc, char*argv[])
/* Rong Tao 2018.03.14 */
{GtkWidget *window;GtkWidget *button;GtkWidget *label;GtkWidget *table;GtkWidget *box;gchar *folder16 = "folder16.png";gtk_init (&argc, &argv);window=gtk_window_new(GTK_WINDOW_TOPLEVEL);gtk_window_set_title(GTK_WINDOW(window),"RT's VTI model");gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);g_signal_connect(GTK_OBJECT(window),"delete_event",GTK_SIGNAL_FUNC(gtk_main_quit),NULL);table=gtk_table_new(3,8,TRUE);gtk_container_add(GTK_CONTAINER(window),table);label=gtk_label_new("Input Filename:");gtk_table_attach_defaults(GTK_TABLE(table),label,0,2,0,1);/*******************  vel *******************/label=gtk_label_new("vel:");gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,1,2);_vel=gtk_entry_new_with_max_length(100);gtk_entry_set_text (GTK_ENTRY (_vel), "vel.dat");gtk_table_attach_defaults(GTK_TABLE(table),_vel,1,7,1,2);button=gtk_button_new();box = xpm_label_box (folder16, NULL);gtk_container_add (GTK_CONTAINER (button), box);g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(select_file),_vel);gtk_table_attach_defaults(GTK_TABLE(table),button,7,8,1,2);/*******************  epsilu *******************/label=gtk_label_new("epsilu:");gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,2,3);_epsilu=gtk_entry_new_with_max_length(100);gtk_entry_set_text (GTK_ENTRY (_epsilu), "epsilu.dat");gtk_table_attach_defaults(GTK_TABLE(table),_epsilu,1,7,2,3);//button=gtk_button_new_with_label("...");button=gtk_button_new();box = xpm_label_box (folder16, NULL);gtk_container_add (GTK_CONTAINER (button), box);g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(select_file),_epsilu);gtk_table_attach_defaults(GTK_TABLE(table),button,7,8,2,3);/*******************  deta *******************/label=gtk_label_new("deta:");gtk_table_attach_defaults(GTK_TABLE(table),label,0,1,3,4);_deta=gtk_entry_new_with_max_length(100);gtk_entry_set_text (GTK_ENTRY (_deta), "deta.dat");gtk_table_attach_defaults(GTK_TABLE(table),_deta,1,7,3,4);//button=gtk_button_new_with_label("...");button=gtk_button_new();box = xpm_label_box (folder16, NULL);gtk_container_add (GTK_CONTAINER (button), box);g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(select_file),_deta);gtk_table_attach_defaults(GTK_TABLE(table),button,7,8,3,4);gtk_widget_show_all(window);gtk_main ();return 0;
}

Makefile内容如下:

lgtk=`pkg-config --cflags --libs gtk+-2.0`ALL:g++ Demo.cpp $(lgtk) -w./a.out

make:

$ make
g++ Demo.cpp `pkg-config --cflags --libs gtk+-2.0` -w
./a.out

运行结果:

另附folder16.png

gtk不是C语言的专属,c++也可以相关推荐

  1. linux mysql c语言编程,在Linux下通过C语言操作MySQL数据库

    2010年1月27日 晚 22:10 作者:longyun(http://www.linuxdiyf.com/mailto:mtd527@gmail.com) 续:小弟最近想学习数据库,并想开发一个简 ...

  2. 基于X的GNOME、GTK、GDK、XLib、GLib等之间的关系

    基于X的GNOME.GTK.GDK.XLib.GLib等之间的关系 什么是Xlib? The X Library是X Window程式最低階的API,如果拿來和Windows 比較起來,Xlib 就和 ...

  3. Overview of GTK+ and its Libraries

    目录 Architecture Creation License Languages Community Architecture Over time GTK+ has been built up t ...

  4. 用C语言给自己的奖状

    使用 C 语言给自己写个奖状吧,先看效果,后附代码 源码如下: #include<graphics.h> #include<conio.h> #include<math. ...

  5. Linux下基于GTK人脸识别界面设计

    Linux下基于GTK人脸识别界面设计 1.人脸识别简介   人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术.用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸, ...

  6. 中国大学慕课公开课-《视听语言》-学习笔记-5

    目录 第六章-摄影元素构成 6.1-影像的构成 6.2-影像语言的画面构成-背景 6.3-影像语言的画面构成-陪体 6.4-影像语言的画面构成-前景 第六章-摄影元素构成 6.1-影像的构成 影像的构 ...

  7. 漫谈C语言及如何学习C语言(转)

    云风最近写了一篇博客<C语言的前世今生>.作为长期使用C语言开发网络游戏服务器的程序员,云风是有理由写这样一篇文字,不过还是感觉谈的不够深入,C语言在业界使用的现状没有怎么描写,有些意犹未 ...

  8. 学好C语言的推荐路径

    为什么要学习C语言? 为什么要学习.使用C语言?为什么要学习一个可能比自己都岁数大的编程语言? 选择一门编程语言,"为什么而学"这个目的是最重要的,目的不明确就没法学好.这也是为什 ...

  9. 使用C语言实现一个虚拟机

    使用C语言实现一个虚拟机 2015-6-22 21:32| 发布者: joejoe0332| 查看: 2891| 评论: 0|原作者: leoxu, Serval, 社会主义好, lostTemple ...

最新文章

  1. MindSpore算子支持类
  2. 存储和存储服务器的游戏
  3. IIS7下 301重定向 添加WWW
  4. 基于局部均方差相关信息的图像去噪及其在实时磨皮美容算法中的应用
  5. HDU 1853 HDU 3488【有向环最小权值覆盖问题 】最小费用最大流
  6. JDBC--Java Database Connectivity
  7. 在mysql中加载并执行sql文件
  8. 数字图像处理与python实现 岳亚伟_数字图像处理与Python实现
  9. 人体计算机原理,人体静力学
  10. 6 观察者模式off方法
  11. ubuntu安装windows 字体
  12. MATLAB串口操作
  13. 信号在PCB走线中的延迟
  14. python中while true输入正数_python入门学习------while和输入内容
  15. 文科生学什麼计算机知识,我们学习计算机知识究竟是在学什么?
  16. 英特尔快速启动技术如何安装
  17. PHP的各种安全问题总结 一文了解PHP的各类漏洞和绕过姿势
  18. Db2用户与linux用户的关系,DB2 UDB 用户和组帐户命名规则
  19. 软件测试工程师自我介绍范文_应届生软件测试面试自我介绍范文4篇
  20. 从微信朋友圈卖“冰丝内裤”看:效果类广告投放哪家强?

热门文章

  1. Spring框架----用于创建对象的Component注解
  2. 【原创】基于phpGrace+uniApp开发之:5.登录界面增加图片验证码
  3. ajax+ashx 完美实现input file上传文件
  4. 2019.7.31正则
  5. 懒癌晚期学图论的时候自己用C语言写了个求可达性矩阵的算法~
  6. Django的rom
  7. 前端知识点总结——VUE
  8. OMS开发随笔之开发和部署要点
  9. JAVA_java.util.Date与java.sql.Date相互转换
  10. lotus 的几个常用公式(转帖)