温馨提示×

如何在Ubuntu上配置C++图形界面

小樊
45
2025-12-01 09:06:17
栏目: 编程语言

在 Ubuntu 上配置 C++ 图形界面

一 常见方案与选择建议

  • Qt:跨平台、生态完善、工具链成熟(Qt Creator、Qt Designer),适合中大型项目与原生外观。
  • GTK+ / gtkmm:Linux 桌面生态常用,GNOME 系应用广泛;C 接口为 GTK+,C++ 绑定为 gtkmm
  • FLTK:轻量级、依赖少、上手快,适合小型工具与教学示例。
  • wxWidgets:更接近原生外观、跨平台一致,适合需要“像本地应用”的项目。

二 快速上手示例

  • GTK+ 3 C 示例

    1. 安装开发库:sudo apt-get update && sudo apt-get install libgtk-3-dev
    2. 代码 main.cpp
      #include <gtk/gtk.h>
      static void activate(GtkApplication* app, gpointer user_data) {
          GtkWidget* window = gtk_application_window_new(app);
          gtk_window_set_title(GTK_WINDOW(window), "Hello GTK+");
          gtk_window_set_default_size(GTK_WINDOW(window), 200, 200);
          g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
          gtk_widget_show_all(window);
      }
      int main(int argc, char** argv) {
          GtkApplication* app = gtk_application_new("org.gtk.example", G_APPLICATION_FLAGS_NONE);
          g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);
          int status = g_application_run(G_APPLICATION(app), argc, argv);
          g_object_unref(app);
          return status;
      }
      
    3. 编译运行:g++ \pkg-config --cflags gtk±3.0` -o myapp main.cpp `pkg-config --libs gtk±3.0` && ./myapp
  • gtkmm 3 C++ 示例

    1. 安装开发库:sudo apt-get install libgtkmm-3.0-dev
    2. 代码 main.cpp
      #include <gtkmm.h>
      class App : public Gtk::Application {
      protected:
          int do_activate() override {
              auto win = new Gtk::Window;
              win->set_title("Hello, Gtkmm!");
              win->set_default_size(200, 200);
              win->set_child(Gtk::make_managed<Gtk::Label>("Hello, World!"));
              win->show();
              return 0;
          }
      };
      int main(int argc, char** argv) {
          auto app = Gtk::Application::create(argc, argv, "org.gtkmm.example");
          return app->run();
      }
      
    3. 编译运行:g++ \pkg-config --cflags gtkmm-3.0` -o myapp main.cpp `pkg-config --libs gtkmm-3.0` && ./myapp
  • FLTK 示例

    1. 安装开发库:sudo apt-get install libfltk1.3-dev
    2. 代码 main.cpp
      #include <FL/Fl.H>
      #include <FL/Fl_Window.H>
      #include <FL/Fl_Button.H>
      void cb(Fl_Widget*, void*) { printf("Button clicked!\n"); }
      int main(int argc, char** argv) {
          Fl_Window win(300, 200, "Hello FLTK");
          Fl_Button btn(100, 80, 100, 30, "Click Me");
          btn.callback(cb);
          win.show(argc, argv);
          return Fl::run();
      }
      
    3. 编译运行:g++ \pkg-config --cflags fltk` -o myapp main.cpp `pkg-config --libs fltk` && ./myapp

三 使用 Qt 的两种方式

  • 方式 A(轻量,系统包)
    1. 安装:sudo apt-get install qtbase5-dev qtchooser qtdeclarative5-dev
    2. 构建:在项目目录执行
      qmake -project
      qmake
      make
      ./your_project_name
      
  • 方式 B(功能完整,官方安装器)
    1. Qt 官网安装 Qt Creator 与所需 Qt 版本(含 Qt Widgets 模块)。
    2. 在 Qt Creator 中新建 Qt Widgets Application,用 Qt Designer 设计界面,直接构建与运行。

四 常见问题与排查

  • 编译报错找不到头文件或链接失败:使用库对应的 pkg-config 参数(如 gtk±3.0gtkmm-3.0fltk)获取编译与链接标志;确保已安装对应的 -dev 包。
  • 运行无界面或提示缺少平台插件(常见于 Qt):设置环境变量指向 Qt 插件目录,例如
    • 若使用官方安装器:export QT_QPA_PLATFORM_PLUGIN_PATH=$HOME/Qt/5.15.2/gcc_64/plugins/platforms
    • 若使用系统包:export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms
  • 需要图形环境:在 SSH 或服务器环境中,启用 X11 转发ssh -X/-Y)或使用 虚拟帧缓冲(如 Xvfb)进行无头测试。

0