为了账号安全,请及时绑定邮箱和手机立即绑定

C指针原理(25)-gtk

标签:
C++


GTK+3开发

GTK+3可以运行在WIN下和LINUX下。

#include <gtk/gtk.h>

int main( int argc, char *argv[])

{

  GtkWidget *window;

  GtkWidget *fixed;

  GtkWidget *button;

  gtk_init(&argc, &argv);

  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

  gtk_window_set_title(GTK_WINDOW(window), "你好");

  gtk_window_set_default_size(GTK_WINDOW(window), 230, 150);

  gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);

  fixed = gtk_fixed_new();

  gtk_container_add(GTK_CONTAINER(window), fixed);

  button = gtk_button_new_with_label("退出");

  gtk_fixed_put(GTK_FIXED(fixed), button, 50, 50);

  gtk_widget_set_size_request(button, 80, 35);

  g_signal_connect(G_OBJECT(button), "clicked",

      G_CALLBACK(gtk_main_quit), G_OBJECT(window));

  g_signal_connect_swapped(G_OBJECT(window), "destroy",

      G_CALLBACK(gtk_main_quit), NULL);

  gtk_widget_show_all(window);

  gtk_main();

  return 0;

}

windows下配置gtk+3与codeblocks的开发环境如下:

选择all-in-one bundle下载后安装。

Then add the bin folder to your PATH. Make sure you have no other

versions of GTK+ in PATH. Run:

    pkg-config --cflags gtk+-3.0

and verify that it prints out something reasonable. Prepare Pango :

    pango-querymodules > c:\gtk\etc\pango\pango.modules

Prepare GDK-Pixbuf :

    gdk-pixbuf-query-loaders > c:\gtk\lib\gdk-pixbuf-2.0\2.10.0\loaders.cache

Prepare GTK+-IMModules :

    gtk-query-immodules-3.0 > c:\gtk\lib\gtk-3.0\3.0.0\immodules.cache

Run:

    gtk3-demo

and verify that it works.

J:\>pkg-config --libs gtk+-3.0 > libs.txt

J:\>pkg-config --cflags gtk+-3.0 > cflags.txt

Codeblocks 建立empty project

#include <gtk/gtk.h>

static void destroy(GtkWidget window,gpointer data){

    printf("%s",gtk_label_get_text(data));

    gtk_main_quit();

}

static gboolean delete_event(GtkWindow window,GdkEvent *event,gpointer data){

    return FALSE;

}

int main( int argc, char argv[])

{

  GtkWidget window;

  char markup;

  char str="hello,world";

  gtk_init(&argc, &argv);

  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

  gtk_window_set_title(GTK_WINDOW(window), "你好");

  gtk_container_set_border_width(GTK_CONTAINER(window),10);

  gtk_window_set_default_size(GTK_WINDOW(window), 130, 150);

  gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);

  GtkWidget * label=gtk_label_new("");

  markup = g_markup_printf_escaped ("<span style=\"italic\">%s</span>",str );

  gtk_label_set_markup (GTK_LABEL (label), markup);

  gtk_label_set_selectable(GTK_LABEL(label),TRUE);

  g_signal_connect(G_OBJECT(window), "destroy",G_CALLBACK(destroy),(gpointer)label);

  g_signal_connect(G_OBJECT(window), "delete _event",G_CALLBACK(delete_event),NULL);

  gtk_container_add(GTK_CONTAINER(window),label);

  gtk_widget_show_all(window);

  gtk_main();

  g_free (markup);

  return 0;

}

在windows下配置远程登录UNIX/LINUX服务器,执行图形程序

在Putty上有X的转发功能,可以将Linux主机的X程序通过SSH通道转发到客户端,交给在本地Windows系统下运行的X Server来管理和显示。 提供X server和SSH服务的软件有很多,可以使用Putty和Xming 

    

     Putty 下载地址:http://www.putty.org/

     Xming 下载地址:http://xming.softpedia.com/

Xming与putty一起实现Linux X11在本地显示的方法如下:

putty上设置:Connection->SSH->X11->Enable X11 forwarding

然后在本地 Windows 系统上启动一个 Xwindow 服务,如 Xming. 这时就可以远程输入命令启动图形界面的程序了,启动后程序的界面将显示在本地的 Windows 桌面上。

Xming的主页:

http://www.straightrunning.com/XmingNotes/

Xming的SourceForge页面:

http://sourceforge.net/projects/xming/

第一次运行时使用开始菜单里面的XLaunch来启动,产生一个初始的配置文件。对于简单的使用来说,不需要任何特殊的配置,一切使用默认即可。Xming的具体配置和使用可以参考http://www.straightrunning.com/XmingNotes/xmingrc.php

运行PuTTY,在配置界面,选择“Connection-SSh-X11”,选中“Enable X11forwarding”,“X display location”中填上上一步中“Display number”中的数字(此处就是“localhost:0”)。

下面测试一下,编写一段简单的关于GTK+的C代码文件:

dp@dp:~/gtklearn % vim test1.c

#include <gtk/gtk.h>

int main (int argc,char *argv[]){

          GtkWidget *window;

          gtk_init (&argc,&argv);

          window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

          g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);

          gtk_widget_show (window);

          gtk_main ();

          return 0;

}

然后,编译运行

gcc pkg-config --cflags gtk+-3.0 -o window-default tset1.c pkg-config --libs gtk+-3.0

给窗口加上标题 

dp@dp:~/gtklearn % vim test1.c

#include <gtk/gtk.h>

int main (int argc,char *argv[]){

          GtkWidget *window;

          gtk_init (&argc,&argv);

          window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

          g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);

          gtk_window_set_title(GTK_WINDOW(window), "hello,world");

          gtk_widget_show (window);

          gtk_main ();

          return 0;

}

~

dp@dp:~/gtklearn % gcc pkg-config --cflags gtk+-3.0 -o window-default test1.c pkg-config --libs gtk+-3.0

dp@dp:~/gtklearn % ./window-default

Xming-fonts的安装

http://xming-fonts.software.informer.com/download/

双击Xming-fonts-7-4-0-3-setup.exe安装Xming-fonts, 安装路径为默认的C:\Program Files\Xming, 则安装字体之后的字体路径就是C:\Program Files\Xming\fonts.

这是windows客户端的显示

下面是在虚拟上安装的freebsd的显示

启动xorg

startx

然后运行程序

如下图

我们也可以选择xmanger,相对xming来说,更加强大,使用xmanger后,为正常显示中文,需要下载字体文件安装

http://www.netsarang.com/download/font.html

同时在freebsd/linux端指定编码为utf-8格式,最后需要调整xshell的参数

 

下面是上述程序在xmanger的运行画面

dp@dp:~/gtklearn % vim test1.c

#include <gtk/gtk.h>

int main (int argc,char *argv[]){

        GtkWidget *window;

        gtk_init (&argc,&argv);

        window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

        g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);

        gtk_window_set_title(GTK_WINDOW(window), "你好,世界");

        gtk_widget_show (window);

        gtk_main ();

        return 0;

}

这是在xfce4中运行的界面:

©著作权归作者所有:来自51CTO博客作者myhaspl的原创作品,如需转载,请注明出处,否则将追究法律责任


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消