Ubuntu C++ 图形界面开发常用库与选型建议
主流框架对比
| 框架 | 跨平台性 | Linux 原生体验 | 性能 | 学习曲线 | 工具支持 | 典型场景 |
|---|---|---|---|---|---|---|
| Qt | 优秀(Windows/macOS/Linux/嵌入式) | 一般 | 高 | 平缓 | 完善(Qt Creator、Qt Designer) | 跨平台、复杂 UI、企业级应用 |
| GTKmm | 良好 | 优秀(GNOME 生态) | 中 | 平缓 | 一般(依赖 GTK 工具) | Linux 桌面原生应用 |
| wxWidgets | 优秀 | 优秀(用各平台原生控件) | 中高 | 平缓 | 一般 | 原生外观、跨平台商业应用 |
| FLTK | 良好 | 一般 | 极高 | 简单 | 较弱(命令行为主) | 嵌入式、小型工具 |
| 以上对比要点包括跨平台能力、原生体验、性能、学习曲线、工具链与典型场景,可作为初筛依据。 |
如何快速选型
在 Ubuntu 上的快速上手
sudo apt update && sudo apt install build-essential cmakesudo apt install qtbase5-dev qtcreator#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) && ./myappsudo apt install libgtkmm-3.0-dev#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_examplesudo apt install libwxgtk3.0-dev#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_examplesudo apt install libfltk1.3-dev#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 上验证环境是否就绪。