Qt5.14.2使用虚拟键盘

本文详细介绍了在Qt5.14.2中使用虚拟键盘(qtvirtualkeyboard)的方法,包括启用虚拟键盘模块以解决键盘遮挡输入框问题,以及如何通过VirtualkeyboardPushView处理视图推拉,确保输入框不被键盘覆盖。同时,还提到了程序独立运行时所需的Qt库文件。

说明

这是关于Qt5(Qt5.1.4.2),QWidget编程使用Qt虚拟键盘(qtvirtualkeyboard)

Tag: QT5,Qt,软件盘、虚拟键盘,Widget程序

作者:474609810@qq.com

关键代码

启用虚拟键盘模块

在QApplication对象创建之前插入代码:

qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));

有这句话之后,QtCreator中运行程序即可有如下效果:(但存在键盘挡住输入框的问题,后面会解决)。

处理视图推拉

对于Qwidget程序,使用qtvirtualkeyboard弹出键盘之后,键盘会浮于表面。

使用VirtualkeyboardPushView模块,自动根据情况把输入视图往上面推移,关键代码如下:

#include "mainwindow.h"

#include <QApplication>
#include "VirtualkeyboardPushView.h"

int main(int argc, char *argv[])
{
    /// 第一步
    qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));

    QApplication a(argc, argv);

    /// 第二步
    VirtualkeyboardPushView keyboardHelper;
    keyboardHelper.makeCompilerHappy();
提供的引用中未提及QT 5.5.1使用虚拟键盘的相关信息,但可参考QT 5.7版本以上及QT 5.14.2使用方法进行推测。 对于QT 5.7版本以上,使用虚拟键盘步骤如下: 1. 代码添加:`qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));` 2. Qml文件导入模块:`import QtQuick.VirtualKeyboard 2.1` 3. 带有TextInput派生类的控件获得输入焦点即可调用出虚拟键盘 [^1]。 对于QT 5.14.2使用VirtualkeyboardPushView模块,自动根据情况把输入视图往上面推移,关键代码如下: ```cpp #include "mainwindow.h" #include <QApplication> #include "VirtualkeyboardPushView.h" int main(int argc, char *argv[]) { /// 第一步 qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard")); QApplication a(argc, argv); /// 第二步 VirtualkeyboardPushView keyboardHelper; keyboardHelper.makeCompilerHappy(); MainWindow w; w.show(); return a.exec(); } ``` 虽然版本不同,但基本思路可能相似,在QT 5.5.1中可尝试按以下步骤使用虚拟键盘: 1. 在代码中添加环境变量设置:`qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));` 2.使用QML,尝试导入合适版本的虚拟键盘模块(可能版本号与5.7以上不同,需根据QT 5.5.1实际情况确定)。 3. 确保带有TextInput派生类的控件获得输入焦点时能调用虚拟键盘。 若要根据不同输入方式显示不同键盘,可参考QT 5.7以上版本设置`inputMethodHints`变量,常用值如下: | inputMethodHints | 描述 | | ---- | ---- | | ImhNone | 默认键盘(默认值) | | ImhDigitsOnly | 数字键盘 | | ImhUppercaseOnly | 大写键盘 | | ImhLowercaseOnly | 小写键盘 | | ImhFormattedNumbersOnly | 数字键盘 + 逻辑符号键盘 |
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值