ubuntu下实现fltk1.3.2的中文界面
2014-02-06 12:55
218 查看
最近琢磨着做一个跨平台的有界面的软件,google过程中发现一个轻量级跨平台GUI库fltk,看文档发现入门及其简单,小小兴奋了一阵,俺马上就能写一次代码,但是可以横跨mac linux和windows的超级软件来啊。
但是在折腾时发现一个问题,很多人说fltk显示中文有问题,兄弟我面对的用户都是土鳖,没中文肯定不行啊。仔细看资料,说fltk1.3已经支持uncode和utf8,应该没问题啊。于是自己写段代码测试下,发现真的显示不出中文。网上很多文章的中文都是在Windows下,在linux下还没有文章介绍如何处理中文。经过一番斗争,终于搞定,写个开篇记录一下,也给后来的兄弟参考参考。
具体过程是这样,我安装的ubuntu12.04中文版,操作系统本身的操作界面都是中文。在这个环境下安装fltk1.3.2,编译过程很顺利,无非是configure,make,在test目录下成功生成一堆例子,挨个跑跑,感觉速度很快很开心。
参考这个链接:http://www.cppblog.com/cyantree/archive/2012/05/13/174761.html 写了个例子sample.cxx程序,成功运行。于是兴冲冲把代码里的英文改成汉字,代码如下:
![](https://img-blog.csdn.net/20140203145607625?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzU5MTc1Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
细心的朋友可能会发现,窗体标题栏的“测试”两个字是正确的,仅仅Button上的汉字是方块,这个问题放下,咱们先解决Button上的问题。
一番粗暴google,发现了这么几篇文章可以参考:
http://stackoverflow.com/questions/11948307/how-to-make-fltk-1-3-0-support-chinese-in-ubuntu-linux
http://blog.csdn.net/thy38/article/details/6132947
http://blog.sina.com.cn/s/blog_494e45fe0100092l.html
貌似是编码问题,于是修改了很多地方的编码设置,还是无果。硬着头皮看看源码,还是找不到问题。
就在一片迷茫的时候,把fltk中自带utf8例子跑跑,发现该例子中文也是乱码,但是日文确是正确的,NND小日本。
于是我想,也许,可能,是字体问题,死马当作活马医吧,把utf8中的日文换成了中文,运行之,Great!中文显示出来了!一时热泪盈眶啊!
问题确定了后面就好办了,把utf8中设置字体的代码抠出来,放到我的sample.cxx中,代码如下:
![](https://img-blog.csdn.net/20140203151242046?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzU5MTc1Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
至此,用fltk写的界面顺利在ubuntu下显示中文。
但是在折腾时发现一个问题,很多人说fltk显示中文有问题,兄弟我面对的用户都是土鳖,没中文肯定不行啊。仔细看资料,说fltk1.3已经支持uncode和utf8,应该没问题啊。于是自己写段代码测试下,发现真的显示不出中文。网上很多文章的中文都是在Windows下,在linux下还没有文章介绍如何处理中文。经过一番斗争,终于搞定,写个开篇记录一下,也给后来的兄弟参考参考。
具体过程是这样,我安装的ubuntu12.04中文版,操作系统本身的操作界面都是中文。在这个环境下安装fltk1.3.2,编译过程很顺利,无非是configure,make,在test目录下成功生成一堆例子,挨个跑跑,感觉速度很快很开心。
参考这个链接:http://www.cppblog.com/cyantree/archive/2012/05/13/174761.html 写了个例子sample.cxx程序,成功运行。于是兴冲冲把代码里的英文改成汉字,代码如下:
#include <FL/Fl.H> #include <FL/Fl_Window.H> #include <FL/Fl_Button.H> using namespace std; //-------------------------------------------- void but_cb( Fl_Widget* o, void* ) { Fl_Button* b=(Fl_Button*)o; b->label("干的好"); //redraw not necessary b->resize(10,150,140,30); //redraw needed b->redraw(); } //-------------------------------------------- int main() { Fl_Window win( 300,200,"测试" ); win.begin(); Fl_Button but( 10, 150, 70, 30, "点我" ); win.end(); but.callback( but_cb ); win.show(); return Fl::run(); }用fltk-config进行编译,运行目标程序,很不幸发现Button上的汉字都变成了方块。
细心的朋友可能会发现,窗体标题栏的“测试”两个字是正确的,仅仅Button上的汉字是方块,这个问题放下,咱们先解决Button上的问题。
一番粗暴google,发现了这么几篇文章可以参考:
http://stackoverflow.com/questions/11948307/how-to-make-fltk-1-3-0-support-chinese-in-ubuntu-linux
http://blog.csdn.net/thy38/article/details/6132947
http://blog.sina.com.cn/s/blog_494e45fe0100092l.html
貌似是编码问题,于是修改了很多地方的编码设置,还是无果。硬着头皮看看源码,还是找不到问题。
就在一片迷茫的时候,把fltk中自带utf8例子跑跑,发现该例子中文也是乱码,但是日文确是正确的,NND小日本。
于是我想,也许,可能,是字体问题,死马当作活马医吧,把utf8中的日文换成了中文,运行之,Great!中文显示出来了!一时热泪盈眶啊!
问题确定了后面就好办了,把utf8中设置字体的代码抠出来,放到我的sample.cxx中,代码如下:
#include <FL/Fl.H> #include <FL/Fl_Window.H> #include <FL/Fl_Button.H> using namespace std; static Fl_Font extra_font; //-------------------------------------------- void but_cb( Fl_Widget* o, void* ) { Fl_Button* b=(Fl_Button*)o; b->label("干的好"); //redraw not necessary b->labelfont(extra_font); b->resize(10,150,140,30); //redraw needed b->redraw(); } //-------------------------------------------- int main() { int i = 0; int k = Fl::set_fonts(i ? (i>1 ? "*" : 0) : "-*"); int font_idx = 18; int font_type; const char* name = Fl::get_font_name((Fl_Font)font_idx, &font_type); printf("idx %d\nUser name :%s:\n", font_idx, name); extra_font = FL_TIMES_BOLD_ITALIC; Fl::set_font(extra_font, (Fl_Font)font_idx); Fl_Window win( 300,200,"测试" ); win.begin(); Fl_Button but( 10, 150, 70, 30, "点我" ); but.labelfont(extra_font); win.end(); but.callback( but_cb ); win.show(); return Fl::run(); }运行结果如下:
至此,用fltk写的界面顺利在ubuntu下显示中文。
相关文章推荐
- ubuntu wine 中文软件界面乱码解决方法
- ubuntu字符界面中文乱码
- ubuntu文字界面开机和中文显示
- zhcon-Ubuntu字符界面中文乱码和分辨率的解决方案
- ubuntu 中文界面下中文文件夹改英文
- 利用Ubuntu+LTSP实现Windows无盘终端(转自ubuntu中文社区)
- zhcon-Ubuntu字符界面(终端tty1-6)中文乱码和分辨率的解决方案
- 自然语言处理入门学习之一:安装nltk包&&虚拟机界面太小&&ubuntu中文输入法安装
- 在Ubuntu英文界面下处理中文
- 在 Ubuntu 英文界面下处理中文
- 实现在ubuntu环境下的中文支持
- Ubuntu的虚拟控制台实现中文(转载及实践可用)
- zhcon-Ubuntu字符界面(终端tty1-6)中文乱码和分辨率的解决方案
- ubuntu 添加中文支持实现方法
- 更改Firefox为中文界面(Ubuntu系统)
- ubuntu字符界面怎么设置中文显示和中文输入
- 解决linux/Ubuntu下Qt creater 界面程序在编译运行后无法显示中文或中文乱码问题!
- 在 Ubuntu 英文界面下处理中文
- Ubuntu下Qt4.8.6生成的界面中文无法显示的问题
- Ubuntu Server安装VNC,实现VNC客户端远程登录Ubuntu Server界面,并安装Navicat