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 vote
觉得不错就给个好评!
赞(1) 打赏
未经允许不得转载:爱易默博客 » Qt5 Virtual Keyboard C++集成与实现(QWidget)
Subscribe
提醒
guest
0 评论
Inline Feedbacks
View all comments
免责声明:本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有,请在下载后24小时之内自觉删除,若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系站长删除,我们将及时处理!

联系我们

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

支付宝扫一扫打赏

微信扫一扫打赏

0
Would love your thoughts, please comment.x
()
x