嵌入式Linux无窗口系统下搭建 Qt 开发环境
本文将介绍如何在树莓派的嵌入式 Linux 环境下,搭建 Qt 开发环境,实现无窗口系统模式(framebuffer)下的图形程序开发。
1. 安装 Qt 环境
接下来,安装核心 Qt 开发库以及与 QML 和 Qt Quick 相关的库:
sudo apt install -y qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools qtdeclarative5-dev qml-module-qtquick2
qtbase5-dev
: 安装 Qt 核心开发库。qtchooser
: 管理不同版本的 Qt 环境。qt5-qmake
: Qt 项目生成工具。qml-module-qtquick2和
qtdeclarative5-dev: 提供 Qt Quick 2 支持。
3. 配置 Qt (无窗口模式)
在没有窗口系统(如 X11 或 Wayland)的环境下,Qt 可以使用framebuffer渲染图形。
使用帧缓冲设备(如 /dev/fb0
),可以通过以下方式启用:
export QT_QPA_PLATFORM=linuxfb
4. 创建 Qt 程序
4.1 创建项目目录
在树莓派上创建一个新的 Qt 项目目录:
mkdir qt
cd qt
4.2 创建 main.cpp
文件
使用文本编辑器创建并编辑 main.cpp
文件:
nano main.cpp
main.cpp
文件内容:
#include <QGuiApplication>
#include <QQuickWindow>
#include <QTimer>// 创建对话框窗口
QQuickWindow* createDialog(QQuickWindow* parent) {QQuickWindow* dialog = new QQuickWindow(parent);dialog->setTitle("弹出对话框");dialog->setWidth(400);dialog->setHeight(300);dialog->setX(parent->width() / 2 - dialog->width() / 2);dialog->setY(parent->height() / 2 - dialog->height() / 2);dialog->setColor(Qt::blue); // 设置背景色return dialog;
}int main(int argc, char** argv) {QGuiApplication app(argc, argv);// 主窗口QQuickWindow mainWindow;mainWindow.setTitle("主窗口");mainWindow.setWidth(800);mainWindow.setHeight(600);mainWindow.setColor(Qt::black);mainWindow.show();// 定时弹出对话框QTimer::singleShot(3000, [&mainWindow]() {QQuickWindow* dialog = createDialog(&mainWindow);dialog->show();});return app.exec();
}
4.3 生成项目文件
使用 qmake
生成项目文件:
qmake -project
4.4 编辑 .pro
文件
编辑生成的 .pro
文件,确保包含正确的 Qt 模块:
nano qt.pro
添加 quick
和 qml
模块:
QT += core gui widgets qml quick
4.5 生成 Makefile
执行以下命令生成 Makefile:
qmake
4.6 编译程序
使用 make
编译程序:
make
4.7 运行程序
运行编译后的程序:
./qt
5. 调试与优化
在调试过程中,可以启用 Qt 的调试日志,以帮助排查问题。
5.1 启用调试日志
在运行程序时,启用调试日志:
export QT_LOGGING_RULES="qt.qpa.*=true"
这将打印与 Qt 平台插件相关的调试信息。
5.2 确保帧缓冲权限
如果程序报出权限错误,确保当前用户对帧缓冲设备(如 /dev/fb0
)有访问权限。执行以下命令:
sudo chmod a+rw /dev/fb0