qtopia2去掉鼠标指针
板子:helper2416 qtopia2.2 作者:帅得不敢出门 c++哈哈堂:31843264
qtopia去掉/隐藏鼠标指针的方法网上不好找,都是qt4的, 只好手动查找方法, 从源码中入手寻找突破口
qt2/src/kernel/qwscursor_qws.cpp
#include <qcursor.h>
#include <qbitmap.h>
#include <qgfx_qws.h>
#include <qapplication.h>
#include "qwindowsystem_qws.h"
#include "qwscursor_qws.h"
#ifndef QT_NO_QWS_CURSOR
static QWSCursor * systemCursorTable[15];
static bool systemCursorTableInit = false;
可以看到有个宏QT_NO_QWS_CURSOR决定了会不会编译它,
所以只要在编译时加上这个宏就可以了.
那么怎么加这个宏呢
qt2/configure
248行
-D?*)
D_FLAGS="$D_FLAGS $1"
好,方法应该找到了.
./configure -qte '-DQT_NO_QWS_CURSOR' 其他选项
然后make应该就可以了.
Qtopia
▶️ Qtopia是什么?
Qtopia是Trolltech公司(现Qt公司)专为嵌入式Linux设备开发的完整应用框架和用户环境套件。主要应用于2000年代早期的PDA、智能手机和工业控制设备。
▶️核心架构组成
Qtopia
Qtopia Core
Qtopia Phone Edition
应用程序套件
开发工具包
Qt Embedded
Framebuffer驱动
主屏幕Launcher
任务栏
虚拟键盘
日历/联系人
媒体播放器
浏览器
交叉编译工具链
QVFb模拟器
▶️技术特性深度解析
1️⃣ 图形渲染优化
- DirectFB后端支持:绕过X Server直接操作framebuffer
- ARM架构优化:针对ARMv5/v6指令集特别优化
- Partial Screen Update:仅更新脏区域降低CPU负载
2️⃣ 输入法框架
- T9键盘预测算法
- Handwriting识别引擎(支持Graffiti输入)
- SIP协议集成
3️⃣ 电源管理
- Dynamic Voltage Scaling接口
- Suspend-to-RAM实现
- Battery状态监控API
▶️典型设备参数要求
| 组件 | 最低配置 | 推荐配置 |
|---|---|---|
| CPU | ARM9@200MHz | XScale@400MHz |
| RAM | 16MB | 64MB+ |
| 存储 | 8MB Flash | 32MB Flash+ |
| 屏幕 | 240x320@16bit | 480x640@18bit |
▶️开发环境搭建示例
#交叉编译工具链配置
export PATH=/opt/arm-linux/bin:$PATH
#配置编译参数
./configure \
--prefix=/opt/qtopia \
--xplatform=linux-arm-g++ \
--disable-keypad \
--enable-touchscreen
#编译安装
make && make install
#部署到NFS根文件系统
cp -r /opt/qtopia /nfsroot/usr/local/
▶️设备驱动集成要点
1️⃣ Framebuffer驱动要求:
- ioctl必须支持FBIOGET_VSCREENINFO
- mmap映射必须正确工作
2️⃣触摸屏校准算法:
void calibrateTS()
{
//五点校准法实现
for(int i=0; i<5; i++){
get_sample(&cal[i]);
apply_matrix_transform();
}
}
▶️演进路线与替代方案
1️⃣ Qtopia → Qt Extended → Qt for Embedded Linux → Qt5/Wayland
2️⃣现代替代方案对比:
| 特性 | Qtopia4 | Qt5 Embedded |
|---|---|---|
| 渲染后端 | Framebuffer | EGLFS/Wayland |
| 输入系统 | TSLIB | libinput |
| 多媒体 | GStreamer0.10 | GStreamer1.0 |
| 开发语言 | C++98 | C++11/14 |
| 硬件加速 | 无 | OpenGL ES2.0+ |
▶️遗留系统维护建议
对于仍需维护Qtopia系统的项目:
1️⃣安全补丁方案:
//修补内存泄漏示例
-qWarning("Error occurred");
+Q_ASSERT_X(!ptr, "func", "nullptr check");
2️⃣现代化改造路径:
- Phase1:用Qt4 Embedded替换核心库
- Phase2:移植到Qt5的LinuxFB插件
- Phase3:逐步替换为Wayland合成器
3️⃣调试技巧:
#启用Qtopia调试输出
export QTOPIA_DEBUG=1
export QT_DEBUG_PLUGINS=1
#查看底层事件
cat /dev/input/event0 | hexdump -C
▶️历史价值分析
Qtopia在嵌入式发展史上的关键贡献:
1️⃣证明了Linux在消费电子设备的可行性
2️⃣开创了Qt在移动领域的应用先河
3️⃣其架构思想影响了Android HAL层设计
当前仍可在以下场景见到其影响:
-工业控制人机界面(HMI)
-医疗设备固件UI层
-航空电子显示系统
本文详细介绍了如何在qtopia2.2环境下通过编译时添加宏来去除鼠标指针的方法,包括配置步骤和具体实现过程。
403

被折叠的 条评论
为什么被折叠?



