我有一个Qt项目,该项目运行在装有默认虚拟键盘的平板电脑上。
因此,我有一个QLineEdit ssoEdit;
,上面安装了一个事件过滤器。
ssoEdit = new QLineEdit(twoFAPage);
ssoEdit->setStyleSheet(editStyleSheet);
ssoEdit->setObjectName("ssoEdit");
ssoEdit->installEventFilter(this);
在事件过滤器中,我有一条if
语句来检查QEvent::focusIn
和watchedObject
是我的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 ++。
如有必要,我将在以后更新代码。
答案 0 :(得分:0)
找到解决方案后,我将结束问题。有一种方法返回了指向默认键盘的指针,然后我可以在该指针上调用show()。该方法随项目提供的sdk可用。