C++在Ubuntu下的图形界面开发
导读:在 Ubuntu 上进行 C++ 图形界面开发 一 环境准备 安装基础编译工具链与常用 IDE: 工具链:sudo apt update && sudo apt install build-essential 编辑器/I...
在 Ubuntu 上进行 C++ 图形界面开发
一 环境准备
- 安装基础编译工具链与常用 IDE:
- 工具链:sudo apt update & & sudo apt install build-essential
- 编辑器/IDE:VS Code(sudo snap install --classic code)、CLion(sudo snap install --classic clion)、Qt Creator(sudo snap install --classic qt-creator-community)
- 以上准备完成后即可开始选择 GUI 框架并进行开发。
二 主流框架与快速上手
- Qt(跨平台企业级首选)
- 安装:sudo apt install qt5-default qttools5-dev-tools qtcreator
- 最小示例(main.cpp):
#include < QApplication> #include < QPushButton> int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton button("Hello, Qt!"); button.show(); return app.exec(); } - 构建:终端执行
qmake -project qmake make ./your_project_name
- GTKmm(GNOME 原生风格)
- 安装:sudo apt install libgtkmm-3.0-dev
- 最小示例(main.cpp):
#include < gtkmm.h> class HelloWorld : public Gtk::Window { public: HelloWorld() { set_title("Hello, GTKmm"); set_default_size(200, 200); auto label = Gtk::manage(new Gtk::Label("Hello, World!")); add(*label); label-> show(); } } ; int main(int argc, char* argv[]) { auto app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); HelloWorld window; return app-> run(window); } - 构建:g++ main.cpp -o hello_gtkmm
pkg-config --cflags --libs gtkmm-3.0& & ./hello_gtkmm
- 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*) { printf("Hello, FLTK!\n"); } int main(int argc, char** argv) { Fl_Window* w = new Fl_Window(300, 200, "Hello FLTK"); Fl_Button* b = new Fl_Button(100, 80, 100, 30, "Click Me"); b-> callback(cb); w-> end(); w-> show(argc, argv); return Fl::run(); } - 构建:g++ main.cpp -o hello_fltk
fltk-config --cxxflags --libs& & ./hello_fltk
- 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++
wx-config --cxxflags-o hello_wx main.cppwx-config --libs& & ./hello_wx
- 其他可选
- ImGui(即时模式,适合调试工具/编辑器):sudo apt install libimgui-dev。
三 框架选型建议
- 需要跨平台与复杂 UI(动画、多媒体、数据库、网络)、工具链一体化:选 Qt(官方 Qt Creator 与 Qt Quick/QML 支持完善)。
- 专注 Linux/GNOME 原生体验、轻量高效:选 GTKmm。
- 资源受限或嵌入式、追求小巧与快速分发:选 FLTK。
- 强调各平台“原生控件外观”、商业友好许可:选 wxWidgets。
四 构建与调试技巧
- 获取编译/链接参数
- pkg-config:用于 GTKmm/FLTK/wxWidgets(如:
pkg-config --cflags --libs gtkmm-3.0、fltk-config --cxxflags --libs、wx-config --cxxflags/--libs) - qmake:用于 Qt(qmake -project → qmake → make)
- pkg-config:用于 GTKmm/FLTK/wxWidgets(如:
- 调试
- IDE 调试:在 Qt Creator/CLion 中设置断点、单步执行
- 命令行:g++ -g main.cpp -o app … 后用 gdb ./app 调试。
五 常见问题与排查
- 命令未找到或找不到库
- 确认已安装对应开发包(如 libgtkmm-3.0-dev、libfltk1.3-dev、libwxgtk3.0-dev),并更新索引:sudo apt update
- 中文显示与字体
- 在 Qt 中使用 QFontDatabase 加载系统字体;在 GTKmm 中确保系统安装中文字体并正确设置 Pango 字体描述
- 打包发布
- Qt:使用 windeployqt(Windows)或 linuxdeployqt(Linux)收集依赖;FLTK 静态链接可减小体积;wxWidgets 发布时携带对应 GTK 运行时或采用静态构建
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: C++在Ubuntu下的图形界面开发
本文地址: https://pptw.com/jishu/783159.html
