Qt5 Virtual Keyboard C++集成与实现(QWidget)

Qt5 Virtual Keyboard C++集成与实现

参考:

Building Qt Virtual Keyboard
keyboardDesignWidth and Height

一. 下载源代码

去官方github下载所需版本的源码:
https://github.com/qt/qtvirtualkeyboard/releases
小C下载的版本为:
https://github.com/qt/qtvirtualkeyboard/archive/v5.10.0.tar.gz

二. 设置

  1. 配置所需语言
    1). 通过Qt Creator配置
    打开Qt工程文件,点开左侧 Projects->Build->Build Steps->qmake->Additional arguments
    Additional arguments 增加配置参数:

    CONFIG+="lang-ar_AR lang-da_DK lang-de_DE lang-en_GB lang-es_ES lang-fa_FA lang-fi_FI lang-fr_FR lang-hi_IN lang-it_IT lang-ja_JP lang-ko_KR lang-nb_NO lang-pl_PL lang-pt_PT lang-ru_RU lang-sv_SE lang-zh_CN lang-zh_TW"

    按需选择所需语言,当然如果简单点配置为所有语言,则如下:

    CONFIG+=lang-all
  2. 配置所需语言
    2). 直接通过命令行配置并生成makefile文件

    /opt/Qt5.10.1/5.10.1/gcc_64/bin/qmake qtvirtualkeyboard.pro -spec linux-g++ 'CONFIG+=lang-all'

    通过 -spec 参数指定为linux平台。

  3. virtualkeyboard.pro配置文件增加:

    LIBS+=-L../../lib

    这么做的原因是因为集成汉语、日语等带有三方库的语言时,最后生成qtvirtualkeyboard时会找不到已生成的三方库,我们只需添加路径即可解决这个问题。

三. C++集成

为了在传统 QWidget 程序里(和QML相对应)也使用 Qt Virtual Keyboard,我们只需在程序的入口处加入如下代码即可:

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

最后,程序看起来像这样

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

    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

四. 定制键盘大小和位置

我们需要更改 InputPanel.qml 文件

Item {
    id: inputPanel

    property int screenHeight: Screen.desktopAvailableHeight; 
    anchors.fill: parent;

    Keyboard {
        id: keyboard

        anchors.horizontalCenter: parent.horizontalCenter
        width: Screen.desktopAvailableWidth * 2 / 3
        y: getInputY()

        function getInputY(){
            return 0
        }
    }
}

示例代码如上所示,定义了键盘的 水平中心位置宽度 ,键盘的纵向位置通过 y 设定,由 getInputY() 函数返回,小C这里没有给出函数具体实现,比较常规的思路可以是根据输入框的位置自适应键盘的位置,当然这还需要更改 qtvirtualkeyboard 相关文件的c++代码,小C这里不做赘述。

五. 更多键盘设置

  1. Qt5 Virtual Keyboard C++集成与实现二(自适应位置)
  2. Qt5 Virtual Keyboard C++集成与实现三(解决模态对话框键盘失效问题)
0 0 投票数
喜欢就给个好评吧!
赞(1) 打赏
未经允许不得转载:爱易默博客 » Qt5 Virtual Keyboard C++集成与实现(QWidget)
订阅评论
提醒
guest

2 评论
最旧
最新 最多投票
内联反馈
查看所有评论
鱼,无言
鱼,无言
1 年 前

您好,我是c++工程,没有InputPanel.qml 这个文件,请问您的工程文件可以给一下做参考吗,感激不尽。

免责声明:本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有,请在下载后24小时之内自觉删除,若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系站长删除,我们将及时处理! Disclaimer: Most of the download resources on this site are collected on the Internet, and are only used for learning and communication. The copyright belongs to the original author. Please consciously delete within 24 hours after downloading. If you use it for commercial purposes, please purchase the original version. If the content posted on this site violates your rights, please contact us to delete it, and we will deal with it in time!

联系我们 Contact us

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

2
0
希望看到您的想法,请您发表评论x