在Linux下进行C++图形界面开发,你可以选择多种图形库和框架。以下是一些常用的库和框架:
sudo apt update
sudo apt install qt5-default
#include <QApplication>
#include <QMainWindow>
#include <QPushButton>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QMainWindow window;
QPushButton *button = new QPushButton("Click Me", &window);
button->setGeometry(100, 100, 100, 30);
QObject::connect(button, SIGNAL(clicked()), &window, SLOT(close()));
window.show();
return app.exec();
}
qmake
和make
工具来编译和运行你的Qt应用程序:qmake -project
make
./your_application_name
sudo apt update
sudo apt install libgtkmm-3-dev
#include <gtk/gtk.h>
int main(int argc, char *argv[]) {
gtk_init(&argc, &argv);
GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "Hello, GTKmm!");
gtk_window_set_default_size(GTK_WINDOW(window), 400, 200);
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
pkg-config
来获取编译和链接标志:g++ `pkg-config --cflags --libs gtkmm-3.0` -o my_gtkmm_app my_gtkmm_app.cpp
./my_gtkmm_app
sudo apt update
sudo apt install libfltk1.3-dev
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Button.H>
void button_cb(Fl_Widget* w, void *data) {
printf("Button clicked!\n");
}
int main(int argc, char **argv) {
Fl_Window* window = new Fl_Window(300, 200, "Hello, FLTK");
Fl_Button* button = new Fl_Button(100, 80, 100, 40, "Click Me");
button->callback(button_cb);
window->end();
window->show(argc, argv);
return Fl::run();
}
g++
编译并运行程序:g++ -o my_fltk_app my_fltk_app.cpp `pkg-config --cflags --libs fltk`
./my_fltk_app
sudo apt update
sudo apt install libwxgtk3.0-dev
#include <wx/wx.h>
class MyApp : public wxApp {
public:
virtual bool OnInit() {
MyFrame *frame = new MyFrame("Hello wxWidgets", wxPoint(50, 50), wxSize(450, 340));
frame->Show(true);
return true;
}
};
class MyFrame : public wxFrame {
public:
MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
: wxFrame(NULL, wxID_ANY, title, pos, size) {
wxMenu *menuFile = new wxMenu;
menuFile->Append(ID_Hello, "&Hello...\tCtrl-H", "Help string shown in status bar for this menu item");
wxMenu *menuHelp = new wxMenu;
menuHelp->Append(wxID_EXIT);
wxMenu *menu = new wxMenu;
menu->Append(ID_Hello, "&Hello...\tCtrl-H", "Help string in status bar for this menu item");
menu->AppendMenu(menuFile, "File");
menu->AppendMenu(menuHelp, "Help");
SetMenu(menu);
}
};
enum { ID_Hello = 1 };
bool MyApp::OnInit() {
MyFrame *frame = new MyFrame("Hello wxWidgets", wxPoint(50, 50), wxSize(450, 340));
frame->Show(true);
return true;
}
int main(int argc, char **argv) {
wxApp::SetInstance(new MyApp);
return wxEntry(argc, argv);
}
g++
编译并运行程序:g++ -o my_wxwidgets_app my_wxwidgets_app.cpp `wx-config --cppflags --libs`
./my_wxwidgets_app
通过以上步骤和示例代码,你可以在Linux下使用C++进行图形界面开发。选择合适的库(如Qt、GTKmm、FLTK或wxWidgets)并根据官方文档进行详细学习和开发。