树莓派下QtVirtualkeyboard的编译与问题解决

本文档详细记录了在Raspbian Buster环境下,基于PySide2和Qt 5.11.3安装及使用Qt Virtual Keyboard的过程。从安装库到解决编译问题,再到调整键盘显示,作者提供了完整的步骤和解决方案,包括创建软链接来解决找不到GLESv2的问题,以及防止虚拟键盘全屏覆盖输入框的方法。此外,还提供了编译后的库包下载链接,供他人参考。

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

背景:

基于CM4开发的显示界面需要用到Virtualkeyboard模块,安装起来不顺利,记录备忘。

环境:

No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 10 (buster)
Release:        10
Codename:       buster

采用的PySide2基于python3开发的, Qt的版本为 5.11.3

参考连接:

python - Install QtVirtualkeyboard in raspberry-pi? - Stack Overflow

c++ - How to find the window that contains the QtVirtualKeyboard - Stack Overflow

/usr/bin/ld: cannot find -lGLESv2 · Issue #101 · MCMrARM/mcpelauncher-linux · GitHub

解决过程:

1、安装官网提供的例子在window上走一遍

        Qt Quick Virtual Keyboard

2、Pyside下Virtual Keyboard的使用

就是在 QApplication之前传个参数,代码如下

if __name__ == "__main__":
    os.environ["QT_IM_MODULE"] = "qtvirtualkeyboard"  # 导入虚拟键盘
    app = QApplication(sys.argv)

在qml中添加下面的引用?不加在输入区域获取焦点后默认会弹出键盘,(大概是一开始传入了虚拟键盘的参数,输入默认被虚拟键盘接管了)由于功能满足,这块没细研究。

import QtQuick.VirtualKeyboard 2.1

3、树莓派下安装虚拟键盘

sudo apt-get install qml-module-qtquick-virtualkeyboard

这个不起作用,安装后没管它,继续找解决方案

4、编译安装virtualkeyboard

sudo apt-get update
sudo apt install git build-essential
sudo apt-get install python3-pyqt5 qt5-default qtdeclarative5-dev libqt5svg5-dev qtbase5-private-dev qml-module-qtquick-controls2 qml-module-qtquick-controls qml-module-qt-labs-folderlistmodel
sudo apt-get install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev
git clone -b 5.11 https://github.com/qt/qtvirtualkeyboard.git
cd qtvirtualkeyboard
qmake 
sudo make
sudo make install

5、编译报错Cannot find GLESv2

解决方法:在make目录下添加软链接

sudo ln -s libbrcmEGL.so /opt/vc/lib/libEGL.so
sudo ln -s libbrcmGLESv2.so /opt/vc/lib/libGLESv2.so
sudo ln -s libbrcmOpenVG.so /opt/vc/lib/libOpenVG.so
sudo ln -s libbrcmWFC.so /opt/vc/lib/libWFC.so

6、编译后库存档

下载链接

Qtvirtualkeyboard在树莓派buster10下编译后库包-嵌入式文档类资源

7、测试新问题

虚拟键盘覆盖了整个屏幕

 8、解决

import os
import sys

from PySide2 import QtCore, QtGui, QtWidgets
# from PyQt5 import QtCore, QtGui, QtWidgets


def handleVisibleChanged():
    if not QtGui.QGuiApplication.inputMethod().isVisible():
        return
    for w in QtGui.QGuiApplication.allWindows():
        if w.metaObject().className() == "QtVirtualKeyboard::InputView":
            keyboard = w.findChild(QtCore.QObject, "keyboard")
            if keyboard is not None:
                r = w.geometry()
                r.moveTop(keyboard.property("y"))
                w.setMask(QtGui.QRegion(r))
                return


def main():
    os.environ["QT_IM_MODULE"] = "qtvirtualkeyboard"
    app = QtWidgets.QApplication(sys.argv)

    QtGui.QGuiApplication.inputMethod().visibleChanged.connect(handleVisibleChanged)

    w = QtWidgets.QLineEdit()
    w.show()
    sys.exit(app.exec_())


if __name__ == "__main__":
    main()

虚拟键盘 软键盘 free virtual keyboard ==================== 将英语译成中文 免费多语言虚拟屏幕键盘 屏幕上的所有虚拟键工作只是因为他们如果你是一个标准的电脑键盘打字。选择键和免费的虚拟键盘发送到一个文字处理器,电子邮件,网页或其他Windows应用程序可能正在使用。键盘可以移动屏幕上的任何地方,可以是任意大小。 免费的虚拟键盘可用于残疾,防止他或她从一个物理电脑键盘打字的人。 也我们的虚拟键盘,你可以: 改变键盘尺寸。 更改键盘的透明度。 打开和关闭一个键复读功能(见上下文菜单)。 规模的虚拟键盘以匹配屏幕宽度(见上下文菜单)。这是一个在纵向和横向模式频繁屏幕旋转有用的功能。 更改键盘(见上下文菜单)的类型。可用3虚拟键盘类型。 更改主题颜色(见上下文菜单)。 任何语言中键入文本。 键入文本(例如左手美国德沃夏克)其他布局。 -------------------------------------------------- ------------------------------ 免费的虚拟键盘是为个人和商业使用免费程序。这个节目作为分发的依据,且无任何担保,甚至没有适销性或针对特定目的的隐含的担保。舒适软件集团不能作出对任何直接或间接造成的破坏计划。 舒适软件集团保留权利更改日后发牌条件。 朗读 显示对应的拉丁字符的拼音新! 点击上方的字词即可查看其他翻译。 删除 字典 - 查看字典详细内容
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bitQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值