在 Ubuntu 上配置 C++ 图形界面
一 常见方案与选择建议
二 快速上手示例
GTK+ 3 C 示例
sudo apt-get update && sudo apt-get install libgtk-3-dev#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;
}
g++ \pkg-config --cflags gtk±3.0` -o myapp main.cpp `pkg-config --libs gtk±3.0` && ./myappgtkmm 3 C++ 示例
sudo apt-get install libgtkmm-3.0-dev#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();
}
g++ \pkg-config --cflags gtkmm-3.0` -o myapp main.cpp `pkg-config --libs gtkmm-3.0` && ./myappFLTK 示例
sudo apt-get install libfltk1.3-dev#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();
}
g++ \pkg-config --cflags fltk` -o myapp main.cpp `pkg-config --libs fltk` && ./myapp三 使用 Qt 的两种方式
sudo apt-get install qtbase5-dev qtchooser qtdeclarative5-devqmake -project
qmake
make
./your_project_name
四 常见问题与排查
export QT_QPA_PLATFORM_PLUGIN_PATH=$HOME/Qt/5.15.2/gcc_64/plugins/platformsexport QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/qt5/plugins/platformsssh -X/-Y)或使用 虚拟帧缓冲(如 Xvfb)进行无头测试。