Linux平台下有多种C++图形界面开发框架可供选择,以下是主流选项:
# Ubuntu/Debian
sudo apt-get install qt5-default qtcreator
# Fedora
sudo dnf install qt5-qtbase-devel qt-creator
# 验证安装
qmake --version
// main.cpp
#include <QApplication>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QLabel *label = new QLabel("Hello Qt World!");
label->setWindowTitle("My First Qt App");
label->resize(400, 300);
label->show();
return app.exec();
}
编译运行:
qmake -project # 生成.pro文件
qmake # 生成Makefile
make # 编译
./项目名称 # 运行
# Ubuntu/Debian
sudo apt-get install libgtkmm-3.0-dev
# Fedora
sudo dnf install gtkmm30-devel
// main.cpp
#include <gtkmm.h>
class MyWindow : public Gtk::Window {
public:
MyWindow() {
set_title("GTKmm Example");
set_default_size(400, 300);
m_button.set_label("Click me!");
m_button.signal_clicked().connect(
sigc::mem_fun(*this, &MyWindow::on_button_clicked));
add(m_button);
show_all_children();
}
protected:
void on_button_clicked() {
std::cout << "Button clicked!" << std::endl;
}
Gtk::Button m_button;
};
int main(int argc, char *argv[]) {
auto app = Gtk::Application::create(argc, argv, "org.gtkmm.example");
MyWindow window;
return app->run(window);
}
编译命令:
g++ main.cpp -o gtkmm_example `pkg-config gtkmm-3.0 --cflags --libs`
// Qt的信号槽示例
QObject::connect(button, &QPushButton::clicked,
[](){ qDebug() << "Button clicked!"; });
// Qt垂直布局示例
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(new QLabel("Name:"));
layout->addWidget(new QLineEdit);
layout->addWidget(new QPushButton("OK"));
window->setLayout(layout);
// 重写事件处理函数示例
class MyWidget : public QWidget {
protected:
void mousePressEvent(QMouseEvent *event) override {
if (event->button() == Qt::LeftButton) {
qDebug() << "Left button pressed at" << event->pos();
}
}
};
官方文档:
书籍推荐:
在线教程:
希望这份入门指南能帮助您开始在Linux下使用C++进行图形界面开发!