虚拟键盘在focusEvent上隐藏

时间:2019-04-16 17:46:54

标签: c++ qt

我有一个Qt项目,该项目运行在装有默认虚拟键盘的平板电脑上。

因此,我有一个QLineEdit ssoEdit;,上面安装了一个事件过滤器。

   ssoEdit = new QLineEdit(twoFAPage);
   ssoEdit->setStyleSheet(editStyleSheet);
   ssoEdit->setObjectName("ssoEdit");
   ssoEdit->installEventFilter(this);

在事件过滤器中,我有一条if语句来检查QEvent::focusInwatchedObject是我的lineEdit。如果为true,则将lineEdit几何形状更改为更高的位置。

bool TemplateObject::eventFilter(QObject *watched, QEvent *event){



    if(event->type()==QEvent::FocusIn && watched->objectName()=="ssoEdit")
    {
        int x,y,w,h;


        ssoLabel->geometry().getRect(&x,&y,&w,&h);
        ssoLabel->setGeometry(QRect(x,y-100,w,h));

        ssoEdit->geometry().getRect(&x,&y,&w,&h);
        ssoEdit->setGeometry(QRect(x,y-100,w,h));



    }



    return false;
}

当我按下ssoEdit时,事件被触发并且ssoEdit移到较高位置,但是虚拟键盘没有显示(尽管光标显示在ssoEdit中) 。如果我再次按ssoEdit,则会显示键盘。

我正在寻找键盘,该键盘在第一次按下并向上移动ssoEdit时会显示并保持向上。

我不知道该怎么办。有什么方法可以强制键盘显示?我不得不提到我不能使用QML文件。只是C ++。

如有必要,我将在以后更新代码。

1 个答案:

答案 0 :(得分:0)

找到解决方案后,我将结束问题。有一种方法返回了指向默认键盘的指针,然后我可以在该指针上调用show()。该方法随项目提供的sdk可用。