CentOS环境下C++图形界面开发入门
一 环境准备与基础工具
sudo yum update -ysudo yum groupinstall "Development Tools" -y(包含 gcc/g++/make 等)sudo yum groupinstall "Server with GUI" -ysudo systemctl set-default graphical.targetsudo reboot二 框架选型与安装
sudo yum install qt5-qtbase-devel -ysudo yum install gtk3-devel -ysudo yum install fltk-devel -ysudo yum install qt-creator -yqmake -vpkg-config --modversion gtk+-3.0fltk-config --version三 快速上手示例
#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+ 3");
gtk_window_set_default_size(GTK_WINDOW(window), 300, 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` hello_gtk.cpp -o hello_gtk `pkg-config --libs gtk+-3.0`
./hello_gtk
#include <QApplication>
#include <QPushButton>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QPushButton button("Hello, Qt 5");
button.resize(200, 100);
button.show();
return app.exec();
}
g++ `pkg-config --cflags Qt5Widgets` -o hello_qt hello_qt.cpp `pkg-config --libs Qt5Widgets`
./hello_qt
cmake_minimum_required(VERSION 3.16)
project(HelloQt LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
find_package(Qt5 COMPONENTS Widgets REQUIRED)
add_executable(hello_qt main.cpp)
target_link_libraries(hello_qt PRIVATE Qt5::Widgets)
构建:mkdir -p build && cd build
cmake ..
make
./hello_qt
#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 win(300, 200, "Hello, FLTK");
Fl_Button btn(100, 80, 100, 40, "Click Me");
btn.callback(cb);
win.end();
win.show(argc, argv);
return Fl::run();
}
g++ `fltk-config --cxxflags` hello_fltk.cpp -o hello_fltk `fltk-config --libs`
./hello_fltk
pkg-config --cflags --libs gtkmm-3.0 获取编译参数。四 构建系统与 IDE 配置
sudo yum install qt-creator -y{
"version": "2.0.0",
"tasks": [
{
"label": "Build Qt",
"type": "shell",
"command": "g++",
"args": [
"`pkg-config --cflags Qt5Widgets`",
"-o", "${workspaceFolder}/hello_qt",
"${workspaceFolder}/hello_qt.cpp",
"`pkg-config --libs Qt5Widgets`"
],
"group": { "kind": "build", "isDefault": true }
}
]
}
五 常见问题与最佳实践
sudo yum provides <缺失文件> 定位提供该文件的 RPM 包。graphical.target),或使用本地/远程桌面会话运行程序。find_package(Qt5 COMPONENTS Widgets REQUIRED))。