首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

wxWidgets 與主流 GUI 庫深度對比(上)

     編輯:關於C語言

翻譯自 wxWidgets Wiki 官方對比文檔(2004 年左右,部分已更新)。官方原文:WxWidgets Compared To Other Toolkits。

wxWidgets 基礎特性

  • 支援語言:C++、Python、Perl、Java、Lua、Eiffel、C#、Basic、Ruby、JavaScript 等。
  • 完整 GUI 工具庫,含大量工具類。
  • 文檔豐富(含片段)。
  • 修改版 LGPL,免費商用/私用,OSI 認證。
  • 盡可能使用原生平台 SDK:同代碼 Win 下編譯得 Win 風格,Linux 下得 Linux 風格。優點:原生外觀行為(如 macOS 文本框自帶拼寫檢查);缺點:跨平台行為可能不一致、不適合需非系統風格的應用。

對比速覽

Qt

  • 同樣提供非 GUI 類(日期、容器、網絡、OpenGL)。
  • Qt 4.5 起雙協議:LGPL(開源/商業)+ 商業協議;wxWidgets 一直修改版 LGPL。
  • Qt 自繪組件模擬原生風格(近期版本部分平台用原生 API 繪製,但事件/佈局仍自行實現);wxUniversal 類似。
  • KDE/嵌入式 Linux 上 Qt 即 原生 GUI。
  • 大項目採用:KDE、Opera(Qt);AOL Communicator(wxWidgets)。
  • Qt 大量虛函數(QWidget ≥51 個),更 OO,代碼行少;wxWidgets 多用宏,執行更快(見仁見智)。
  • Qt 被 IBM、Borland Kylix 採用;傳聞 wxWidgets 將用於 C++BuilderX。
  • Qt for Embedded Linux (framebuffer) 開箱即用,與 X11 差異極小。
  • IDE 豐富:Qt Designer/Creator、QDevelop、Edyuk,亦可集成 VS/Eclipse/Xcode;wxWidgets 亦有多 IDE。
  • 官方商業支持雙方均有。
  • 可用 Qt 實現 wxWidgets,亦可用 wxGTK+GTK-Qt 模擬 Qt。

FLTK

  • wxWidgets 更 OO;FLTK 更輕量,wxWidgets 功能全(網絡、打印等)。
  • FLTK 組件類型更細緻,移植按鈕樣式極費時。
  • FLTK 修改版 LGPL 比 wxWidgets 更嚴格(雖允許靜態鏈接例外)。
  • 擁有 GUI 設計器 FLUID。

FOX

  • FOX 更輕量,專注 GUI;wxWidgets 全功能(含完整 API)。
  • 同 Qt,FOX 自繪組件,不融入平台主題(如無 XP 主題);wxWidgets 用原生 API。
  • FOX 1.6 前無 I18N,1.6 採 UTF-8 內部編碼支援亞洲文字。
  • 無 Windows 標準對話框,有替代方案。

Java (Swing/AWT/SWT/Qt Jambi/wx4j)

  • Java 是語言,wxWidgets 是 GUI API,可結合(如 wx4j 用 wxWidgets 綁定 Java,得 C++ 速度)。
  • Java 字節碼啟動慢、響應遲、易反編譯;wxWidgets 編譯機器碼、快、難反編譯。
  • 需安裝 JVM,舊版本有性能/安全隱患。
  • Java 庫部分用 wxWidgets+C++ 寫以提速。
  • Java 組件僅提供跨平台共性,移除平台特有特性(Win 任務欄、Mac 菜單欄、Unix 文件屬性);wxWidgets 可用平台原生代碼或模擬組件(MDI、Tree)。
  • Java 佔用更多內存。
  • 「一次編寫到處運行」仍是神話,JVM 坑多;wxWidgets 狀況不更糟。
  • wxString vs java.lang.String:前者功能更全、文檔更好。

SDL / SFML / Allegro

  • SDL (C)、SFML (C++)、Allegro (C) 均為多媒體/遊戲庫,非通用 GUI,適合自定義組件/遊戲開發。
  • SDL 單窗口、LGPL v2、優秀 OpenGL 集成(CEGUI 等)。
  • SFML 含音頻/網絡/線程,可與 wxWidgets/Qt/X11 混用。
  • Allegro 遠古級、Giftware 協議、極基礎 GUI(連移動窗口都不支援)、可與 wxWidgets 共用窗口句柄整合(需 END_OF_MAIN() 配合)。

待續……

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved