温馨提示×

Ubuntu C++图形界面开发用什么库

小樊
43
2025-12-26 22:47:14
栏目: 编程语言

Ubuntu C++ 图形界面开发常用库与选型建议

主流框架对比

框架 跨平台性 Linux 原生体验 性能 学习曲线 工具支持 典型场景
Qt 优秀(Windows/macOS/Linux/嵌入式) 一般 平缓 完善(Qt Creator、Qt Designer) 跨平台、复杂 UI、企业级应用
GTKmm 良好 优秀(GNOME 生态) 平缓 一般(依赖 GTK 工具) Linux 桌面原生应用
wxWidgets 优秀 优秀(用各平台原生控件) 中高 平缓 一般 原生外观、跨平台商业应用
FLTK 良好 一般 极高 简单 较弱(命令行为主) 嵌入式、小型工具
以上对比要点包括跨平台能力、原生体验、性能、学习曲线、工具链与典型场景,可作为初筛依据。

如何快速选型

  • 需要一次编码覆盖 Windows/macOS/Linux,并追求组件丰富与工具链完善,选 Qt
  • 专注 Ubuntu/GNOME,强调系统一致外观与轻量,选 GTKmm
  • 希望跨平台同时保留各平台原生控件观感,且考虑闭源商业分发,选 wxWidgets
  • 面向 嵌入式/资源受限 或快速原型工具,选 FLTK
  • 额外关注:目标桌面生态(KDE/GNOME)、团队技术栈、第三方依赖与许可(如 LGPL/GPL/商业)、发布与打包方式。

在 Ubuntu 上的快速上手

  • 通用准备
    • 安装编译工具与构建系统:sudo apt update && sudo apt install build-essential cmake
  • Qt
    • 安装:sudo apt install qtbase5-dev qtcreator
    • 最小示例(Widgets):
      • main.cpp
        #include <QApplication>
        #include <QPushButton>
        int main(int argc, char *argv[]) {
            QApplication app(argc, argv);
            QPushButton btn("Hello, Qt!");
            btn.show();
            return app.exec();
        }
        
      • 构建运行:
        • 终端:g++ -o myapp main.cpp $(pkg-config --cflags --libs Qt5Widgets) && ./myapp
        • 或 Qt Creator:新建 Qt Widgets 项目,一键构建运行。
  • GTKmm
    • 安装:sudo apt install libgtkmm-3.0-dev
    • 最小示例:
      • main.cpp
        #include <gtkmm.h>
        class Hello : public Gtk::Window {
        public:
            Hello() { set_title("Hello GTKmm"); set_default_size(200, 200); add(*Gtk::manage(new Gtk::Label("Hello, World!"))); show_all(); }
        };
        int main(int argc, char *argv[]) {
            auto app = Gtk::Application::create(argc, argv, "org.gtkmm.example");
            Hello win;
            return app->run(win);
        }
        
      • 构建运行:g++ main.cpp -o gtkmm_example $(pkg-config --cflags --libs gtkmm-3.0) && ./gtkmm_example
  • wxWidgets
    • 安装:sudo apt install libwxgtk3.0-dev
    • 最小示例:
      • main.cpp
        #include <wx/wx.h>
        class MyApp : public wxApp { bool OnInit() override { (new wxFrame(nullptr, wxID_ANY, "Hello wxWidgets"))->Show(true); return true; } };
        wxIMPLEMENT_APP(MyApp);
        
      • 构建运行:g++ main.cpp $(wx-config --cxxflags --libs) -o wx_example && ./wx_example
  • FLTK
    • 安装:sudo apt install libfltk1.3-dev
    • 最小示例:
      • main.cpp
        #include <FL/Fl.H>
        #include <FL/Fl_Window.H>
        #include <FL/Fl_Button.H>
        void cb(Fl_Widget*, void*) { fl_message("Clicked!"); }
        int main() {
            Fl_Window win(300,200,"Hello FLTK");
            Fl_Button btn(100,80,100,30,"Click");
            btn.callback(cb);
            win.end(); win.show();
            return Fl::run();
        }
        
      • 构建运行:g++ main.cpp -o fltk_example -lfltk && ./fltk_example 以上安装命令、示例代码与构建方式可直接在 Ubuntu 上验证环境是否就绪。

0