hi3515 QT设置环境变量QWS_DISPLAY

本文深入探讨了使用Qt应用启动时如何通过QWS_DISPLAY环境变量指定显示目标,包括虚拟帧缓冲(qvfb)在远程或本地显示的方法,以及真实帧缓冲(arm)的设置方式。详细解释了不同情况下显示设备的选择与配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当应用程序./myQtApp -qws启动时,会去检测QWS_DISPLAY这个环境变量

判断界面最终显示在哪个framebuffer中,

如果是虚拟的framebuffer(qvfb,x86),则分两种情况:

1.显示在远程计算机上

QWS_DISPLAY=192.168.1.1:0

指定了要显示的目的机器的ip地址

2.显示在本机上

QWS_DISPLAY=QVFb:0

冒号后面的是旋转角度。 它可以在0 90 180 270中取值,对应的屏幕就会发生旋转。

Rot90 Rot180 Rot270是规范写法

如果是真实的帧缓冲(arm),则设置如下:

QWS_DISPLAY="LinuxFb:mmWidth100:mmHeight130:0"
QWS_DISPLAY=EP93xx:/dev/fb0

QWS_DISPLAY=:1:/dev/fb0

直接指向显示设备文件

QScreen在创建时会按特定图形设备及显示屏号建立帧缓冲,需要的参数如下:

qws_display_id   对应第一个":"前的dd

qws_display_spec 对应除了qws_display_id之外的dd,包括“:”

<think>根据用户的问题,他询问的是在Qt 5.13.2中如何配置QWS_KEYBOARD。首先,我需要回忆一下Qt Embedded Linux(QWS)的相关知识。在Qt 4中,QWSQt Window System)是用于嵌入式Linux的窗口系统,而QWS_KEYBOARD是用来指定键盘设备的环境变量。然而,在Qt 5中,Qt不再使用QWS,而是转向了Wayland或直接使用Linux输入事件(如evdev)。但是,用户特别提到了Qt 5.13.2和QWS_KEYBOARD,这可能是用于向后兼容或者特定的嵌入式环境。 查阅Qt 5.13.2的文档,发现Qt 5已经弃用了QWS,但在某些嵌入式Linux平台上,如果使用LinuxFB插件,可能仍然需要设置输入设备。在Qt 5中,通常使用环境变量来指定输入设备,例如: - 对于鼠标:QT_QPA_EVDEV_MOUSE_PARAMETERS - 对于键盘:QT_QPA_EVDEV_KEYBOARD_PARAMETERS 但是,用户提到了QWS_KEYBOARD,这可能是从Qt 4迁移过来的项目。在Qt 5中,对于键盘设备,可以通过设置环境变量QT_QPA_EVDEV_KEYBOARD_PARAMETERS来指定键盘设备节点。例如: ```bash export QT_QPA_EVDEV_KEYBOARD_PARAMETERS=/dev/input/event0 ``` 另外,在运行Qt应用程序时,可以通过-platform参数指定平台插件,例如: ```bash ./myapp -platform linuxfb:input=/dev/input/event0 ``` 但更常见的是使用环境变量设置。 因此,在Qt 5.13.2中,配置键盘设备通常不再使用QWS_KEYBOARD,而是使用QT_QPA_EVDEV_KEYBOARD_PARAMETERS。不过,为了确保兼容性,我们可以检查Qt 5.13.2的文档。 根据Qt 5.13.2文档中关于Linux Input Devices的部分,输入设备可以通过环境变量或命令行参数进行配置。具体来说: - 环境变量QT_QPA_EVDEV_KEYBOARD_PARAMETERS可以指定键盘设备节点和其他参数。 - 也可以使用QT_QPA_GENERIC_PLUGINS环境变量来指定输入设备插件,例如: ```bash export QT_QPA_GENERIC_PLUGINS=evdevkeyboard,evdevmouse ``` 然后通过环境变量QT_QPA_EVDEV_KEYBOARD_PARAMETERS指定设备节点。 所以,针对用户的问题,我们可以这样回答: 在Qt 5.13.2中,配置键盘设备的方法如下: 1. 使用环境变量设置键盘设备节点: ```bash export QT_QPA_EVDEV_KEYBOARD_PARAMETERS=/dev/input/event0 ``` 其中`/dev/input/event0`是键盘设备的节点,具体节点需要根据系统实际情况确定。 2. 如果同时需要指定多个输入设备,可以使用QT_QPA_GENERIC_PLUGINS环境变量来加载输入插件,并分别设置各自的参数: ```bash export QT_QPA_GENERIC_PLUGINS=evdevkeyboard,evdevmouse export QT_QPA_EVDEV_KEYBOARD_PARAMETERS=/dev/input/event0 export QT_QPA_EVDEV_MOUSE_PARAMETERS=/dev/input/event1 ``` 3. 在运行应用程序时,也可以通过命令行参数指定: ```bash ./myapp -platform linuxfb:input=/dev/input/event0 ``` 注意:在Qt 5中,QWS已经被废弃,因此不再使用QWS_KEYBOARD环境变量。如果用户是从Qt 4迁移到Qt 5.13.2,应该使用上述Qt 5的输入设备配置方法。 另外,需要确保在编译Qt时已经启用了evdev支持。在配置Qt时,需要确保有`-evdev`选项。可以通过运行`configure -help`查看,通常默认是启用的。 最后,为了确保正确性,建议用户检查输入设备节点是否存在,可以使用`cat /proc/bus/input/devices`或`ls /dev/input`来查看可用的输入设备。 相关问题: 1. 在Qt 5中如何配置多个输入设备? 2. 如何确认Qt的编译是否启用了evdev支持? 3. 在嵌入式Linux中,Qt 5的输入设备配置与Qt 4有何不同?</think>### Qt 5.13.2 配置 QWS_KEYBOARD 方法 在 Qt 5.13.2 中配置 `QWS_KEYBOARD` 需要理解以下关键点: 1. **Qt 5 的架构变化** Qt 5 已弃用 QWSQt Window System),改用 QPA(Qt Platform Abstraction)架构[^1]。原 QWS环境变量(如 `QWS_KEYBOARD`)在 Qt 5 中不再直接支持,需通过 QPA 插件实现类似功能。 2. **配置步骤** **方法1:通过环境变量** 使用 `QT_QPA_EVDEV_KEYBOARD_PARAMETERS` 替代 `QWS_KEYBOARD`: ```bash export QT_QPA_PLATFORM=linuxfb # 使用 Linux Framebuffer export QT_QPA_EVDEV_KEYBOARD_PARAMETERS=/dev/input/event0 # 指定键盘设备节点 ./your_qt_application ``` **方法2:命令行参数** 直接在启动命令中指定: ```bash ./your_qt_application -plugin evdevkeyboard:/dev/input/event0 ``` **方法3:配置文件** 创建 `/etc/qt5/qt-env.conf`: ```ini QT_QPA_PLATFORM = linuxfb QT_QPA_EVDEV_KEYBOARD_PARAMETERS = /dev/input/event0 ``` 3. **确定键盘设备节点** 通过以下命令查看输入设备: ```bash cat /proc/bus/input/devices | grep -A5 "Keyboard" # 或 ls /dev/input/by-path/ | grep kbd ``` 典型设备节点:`/dev/input/event0` 或 `/dev/input/by-path/platform-i8042-serio-0-event-kbd` 4. **特殊键盘支持** - **USB 键盘**:设备节点通常是 `/dev/input/event*` - **虚拟键盘**:需启用 `qtvirtualkeyboard` 插件: ```bash export QT_IM_MODULE=qtvirtualkeyboard ``` 5. **调试方法** 添加环境变量查看输入事件: ```bash export QT_LOGGING_RULES=qt.qpa.input=true ./your_qt_application ``` 日志将显示键盘事件检测状态。 > ⚠️ **注意** > - Qt 5.13.2 需在编译时启用 `evdev` 支持(配置时添加 `-evdev` 选项) > - 若使用触摸屏+虚拟键盘方案,需额外配置 `QT_QPA_GENERIC_PLUGINS=evdevtouch` > - 完整文档见 [Qt for Embedded Linux](https://doc.qt.io/qt-5/embedded-linux.html)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值