Qt5 Virtual Keyboard C++集成与实现二(自适应位置)

上一篇文章介绍了 Qt5 Virtual Keyboard的编译和大小设置 ,现在让我们接下来看看如何让Qt键盘实现根据输入控件的位置和大小而自动调整自己的位置。

Qt5 Virtual Keyboard C++集成与实现二(自适应位置)

一. 实现

  1. inputcontex.h增加如下内容:

    Q_PROPERTY(QRectF inputItemGeometry READ inputItemGeometry)
    QRectF inputItemGeometry();

    inputcontex.cpp增加如下内容:

    QRectF InputContext::inputItemGeometry()
    {
    QWidget* pInputItem = (QWidget*)inputItem();
    return pInputItem ? QRectF(((QWidget*)pInputItem->parent())->mapToGlobal(pInputItem->geometry().topLeft()), pInputItem->geometry().size()) : QRectF(0,0,0,0);
    }

    我们使用这个函数来获取当前控件的位置和大小信息。

  2. InputPanel.qml增加如下内容:

        anchors.horizontalCenter: parent.horizontalCenter
        width: Screen.desktopAvailableWidth * 2 / 3
    
        states: State {
            name: "visible";
            when: keyboard.active;
            PropertyChanges {
                target: keyboard;
                y: getInputY()
            }
        }
        transitions: Transition {
            from: "";
            to: "visible";
            reversible: true;
            ParallelAnimation {
                NumberAnimation {
                    properties: "y";
                    duration: 250;
                    easing.type: Easing.InOutQuad;
                }
            }
        }
        function getInputY(){
            if(InputContext.inputItemGeometry.y + InputContext.inputItemGeometry.height + keyboard.height <= screenHeight){
                return InputContext.inputItemGeometry.y + InputContext.inputItemGeometry.height
            }
            else if(InputContext.inputItemGeometry.y - keyboard.height - 100 >= 0)
            {
                return InputContext.inputItemGeometry.y - keyboard.height - 50
            }
            else
            {
                return screenHeight - keyboard.height
            }
        }

    我们使用getInputY函数根据输入控件的位置和大小来调整Qt键盘的位置。

二. 效果

Qt5 Virtual Keyboard C++集成与实现二(自适应位置)

三. 更多键盘设置

  1. Qt5 Virtual Keyboard C++集成与实现一(基于QWidget的多语言键盘编译及自定义大小)
  2. Qt5 Virtual Keyboard C++集成与实现三(解决模态对话框键盘失效问题)
0 0 vote
喜欢就给个好评吧!
赞(0) 打赏
未经允许不得转载:爱易默博客 » Qt5 Virtual Keyboard C++集成与实现二(自适应位置)
Subscribe
提醒
guest
0 评论
Inline Feedbacks
View all comments
免责声明:本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有,请在下载后24小时之内自觉删除,若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系站长删除,我们将及时处理!

联系我们

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

支付宝扫一扫打赏

微信扫一扫打赏

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