温馨提示×

Ubuntu下C++图形界面编程如何入门

小樊
41
2025-12-23 01:20:52
栏目: 编程语言

入门路线与工具

  • 在 Ubuntu 上做 C++ GUI,常用路线有:Qt(功能全、跨平台、生态完善)、GTK+/gtkmm(GNOME 生态、Linux 原生)、FLTK(轻量、上手快)、wxWidgets(贴近原生外观)、以及用于工具/引擎的 Dear ImGui(即时模式、适合调试/可视化)。建议先装好基础编译工具,再按所选框架安装开发库与示例工程跑通“Hello World”。

环境准备

  • 安装基础编译工具与构建链:
    • sudo apt update && sudo apt install build-essential cmake
  • 选择你的第一套框架并安装(示例命令):
    • Qt5:sudo apt install qt5-default qtbase5-dev qtchooser
    • GTK3:sudo apt install libgtk-3-dev
    • gtkmm3:sudo apt install libgtkmm-3.0-dev
    • FLTK:sudo apt install libfltk1.3-dev
    • wxWidgets:sudo apt install libwxgtk3.0-dev
    • Dear ImGui(配合 GLFW/OpenGL):sudo apt install libimgui-dev libglfw3-dev libopengl-dev
  • IDE 可选:Qt CreatorVS Code(配合 CMake/Meson)、CLion 等。

三种路线快速上手

  • Qt(Widgets 应用)
    • 安装后可直接用 Qt Creator 新建“Qt Widgets Application”,或手工编写最小化示例:
      • 代码示例(main.cpp) #include #include int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton button(“Hello, Qt!”); button.show(); return app.exec(); }
      • 编译运行(两种方式)
        • 命令行:qmake -project && qmake && make && ./your_app
        • 或 CMake(CMakeLists.txt 片段) cmake_minimum_required(VERSION 3.16) project(HelloQt LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) find_package(Qt5 COMPONENTS Widgets REQUIRED) add_executable(hello main.cpp) target_link_libraries(hello Qt5::Widgets)
  • GTK+ 3(C 接口)
    • 安装开发库后,示例与编译命令:
      • 代码示例(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); 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; }
      • 编译:g++ pkg-config --cflags gtk+-3.0 -o myapp main.cpp pkg-config --libs gtk+-3.0
  • FLTK(轻量 C++ GUI)
    • 安装后示例与编译命令:
      • 代码示例(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() { Fl_Window win(300, 200, “Hello, FLTK”); Fl_Button btn(100, 80, 100, 30, “Click Me”); btn.callback(cb); win.end(); win.show(); return Fl::run(); }
      • 编译:g++ pkg-config --cflags fltk -o myapp main.cpp pkg-config --libs fltk
  • Dear ImGui(即时模式,适合工具/调试)
    • 安装依赖后,示例与编译要点:
      • 代码示例(main.cpp,基于 GLFW+OpenGL3) #include “imgui.h” #include “backends/imgui_impl_glfw.h” #include “backends/imgui_impl_opengl3.h” #include <GLFW/glfw3.h> int main() { if (!glfwInit()) return -1; GLFWwindow* window = glfwCreateWindow(1280, 720, “ImGui”, nullptr, nullptr); glfwMakeContextCurrent(window); glfwSwapInterval(1); IMGUI_CHECKVERSION(); ImGui::CreateContext(); ImGui::StyleColorsDark(); ImGui_ImplGlfw_InitForOpenGL(window, true); ImGui_ImplOpenGL3_Init(“#version 130”); while (!glfwWindowShouldClose(window)) { glfwPollEvents(); ImGui_ImplOpenGL3_NewFrame(); ImGui_ImplGlfw_NewFrame(); ImGui::NewFrame(); ImGui::Begin(“Hello, ImGui!”); ImGui::Text(“This is ImGui”); ImGui::End(); ImGui::Render(); glClearColor(0.45f, 0.55f, 0.60f, 1.00f); glClear(GL_COLOR_BUFFER_BIT); ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); glfwSwapBuffers(window); } ImGui_ImplOpenGL3_Shutdown(); ImGui_ImplGlfw_Shutdown(); ImGui::DestroyContext(); glfwDestroyWindow(window); glfwTerminate(); return 0; }
      • 编译(pkg-config 方式示例):g++ main.cpp pkg-config --cflags --libs imgui glfw3 opengl -o imgui_demo
      • 注意:ImGui 需搭配渲染后端(如 GLFW+OpenGL3),更适合做调试面板/编辑器,而非传统桌面应用发布形态。

如何选择与下一步

  • 选择建议
    • 追求功能完整、跨平台与工具链:选 Qt
    • 偏好 GNOME 生态、Linux 原生外观:选 GTK+/gtkmm
    • 需要轻量、依赖少、快速原型:选 FLTK
    • 希望贴近各平台原生控件:选 wxWidgets
    • 做游戏/引擎/可视化调试工具:选 Dear ImGui
  • 下一步学习路径
    • 控件与布局:按钮、文本框、列表、网格、菜单/工具栏、对话框。
    • 事件与信号槽/回调:用户交互、定时器、线程与 UI 刷新。
    • 资源管理:图片/字体、翻译与多语言、主题与样式。
    • 构建与打包:CMake/Meson、单元测试、打包发布(如 AppImage、deb)。

0