日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

开源跨平台GUI库Fltk在Deepin Linux下的使用

發(fā)布時間:2023/12/31 linux 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 开源跨平台GUI库Fltk在Deepin Linux下的使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

開源跨平臺GUI庫Fltk在Deepin Linux下的使用

  • 前言
  • 一、下載安裝
  • 二、樣例使用
  • 三、自編代碼
  • 四、后記

前言

在互聯(lián)網(wǎng)應(yīng)用漫天的現(xiàn)在,實體企業(yè)、工廠卻繞不開大量的桌面應(yīng)用,開發(fā)工具有恐龍C#,有難用的MFC,也有沒落的Delphi,還有新星QT。工業(yè)品怕被卡脖子,還是用全開源的吧!OS還是用咱們國產(chǎn)的Deepin Linux,GUI用C++版的Fltk,短小精悍、速度快、可定制性強,今天一測究竟。

一、下載安裝

到官網(wǎng) www.fltk.org 可以看到最新的穩(wěn)定版,我下載的是fltk-1.3.7-source.tar.bz2,才4.4Mb.
解壓到工作目錄或主目錄:

tar -xzvf fltk-1.3.7-source.tar.bz2cd fltk-1.3.7/

進入其目錄后,用configure配置, --help可以查看參數(shù),如果安裝過程中缺少某些庫,比如xft,可以用參數(shù)不安裝xft, 還可以選安裝字符集支持cp936.

./configure --help ./configure --disable-xft --enable-cp936

如果缺少某些關(guān)鍵部分,比如X11, opengl等,configure的記錄會提示你,用 sudo apt-get install xxx 補上。
如果順利,接下來就是編譯和安裝。

make sudo make install

二、樣例使用

與其他開源庫比較,Fltk自帶的例子算很豐富了。在其目錄的test目錄下,有許多簡單程序,都已經(jīng)在make時編譯好了,可直接運行。比如,輸入 ./unittests 可展示多種特性,包括皮膚功能。

但字體效果不好:

用于工控的界面如下,可能看上去有點寒磣,但如果加上自己設(shè)計的皮膚,就脫胎換骨啦!

還有很多例子,都有源碼和編譯好的,都在同一目錄(test)下,名為demo的例子是其他例子的總集成。

三、自編代碼

為了不污染它的例子,在另外的目錄下,自己寫個Hello world:

#include <FL/Fl.H> #include <FL/Fl_Window.H> #include <FL/Fl_Box.H>int main(int argc, char **argv) {Fl_Window *window = new Fl_Window(340,180);Fl_Box *box = new Fl_Box(20,40,300,100,"Hello, World!");box->box(FL_UP_BOX);box->labelfont(FL_BOLD+FL_ITALIC);box->labelsize(36);box->labeltype(FL_SHADOW_LABEL);window->end();window->show(argc, argv);return Fl::run(); }

如果按照網(wǎng)上的說法: g++ hello.cpp -lfltk -o hello 在早期版本可以,而現(xiàn)在編譯參數(shù)太復雜了,如果不用cmake,就用它自帶的工具fltk-config:

fltk-config --compile hello.cpp

就會生成可運行的 hello 程序。

其他網(wǎng)友介紹鏈接:
Fltk入門
外國網(wǎng)友的入門翻譯為漢語

中文顯示有問題,可以參考https://blog.csdn.net/u013591757/article/details/18909491
但我測試,中文沒有顯示

折騰了許久,發(fā)現(xiàn)編譯Fltk時,./configure 不要帶其他參數(shù),直接用默認值,因為Deepin Linux 已經(jīng)把中文字體安裝和配置好了。用以下指令就可以查看到哪些中文字體:

fc-list :lang=zh fc-list | grep

把上面的hello.cpp中的文本換成中文如下:

Fl_Box *box = new Fl_Box(20,40,300,100,"Hello, World!");

再編譯運行,結(jié)果如下圖:

四、后記

雖然自帶的編譯命令: fltk-config --compile hello.cpp可以,但對于稍微復雜的程序,比如用了opengl的程序,就不再適用。需要查看錯誤原因,并補上相關(guān)的庫。比如:

#include <stdlib.h> #include <FL/Fl.H> #include <FL/gl.h> #include <FL/Fl_Gl_Window.H>// fltk-config --compile hello.cpp 無法編譯// 需要自己增加編譯指令如下 /* g++ hello.cpp -I/usr/local/include -I/usr/local/include/FL/images -I/usr/local/include/freetype2 -I/usr/include/uuid -I/usr/include/libpng16 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_THREAD_SAFE -D_REENTRANT /usr/local/lib/libfltk.a -lXrender -lXcursor -lXfixes -lXext -lXft -lfontconfig -lXinerama -lpthread -ldl -lm -lX11 -lfltk_gl -lGL */ class MyWin: public Fl_Gl_Window {void draw(){glLoadIdentity();glViewport(0, 0 , 400, 300);}public:MyWin(int x, int y, int w, int h, const char *L): Fl_Gl_Window(x, y, w, h){}; }; int main (int argc, char **argv) {Fl_Window *window = new MyWin (100, 80, 640, 480, "mywindow 中文");window->end ();window->show (argc, argv);// Fl::set_idle(idle_cb);return Fl::run(); }

總結(jié)

以上是生活随笔為你收集整理的开源跨平台GUI库Fltk在Deepin Linux下的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。