c++ - 虚拟键盘隐藏在 focusEvent 上
问题描述
我有一个 Qt 项目,该项目在具有默认虚拟键盘的平板电脑上运行。
所以,我有一个QLineEdit ssoEdit;
我安装了一个事件过滤器。
ssoEdit = new QLineEdit(twoFAPage);
ssoEdit->setStyleSheet(editStyleSheet);
ssoEdit->setObjectName("ssoEdit");
ssoEdit->installEventFilter(this);
在事件过滤器中,我有一个if
声明要检查QEvent::focusIn
并watchedObject
成为我的lineEdit
. 如果为真,我会更改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++。
如有必要,我稍后会更新代码。
解决方案
当我找到解决方案时,我将结束这个问题。有一种方法可以返回指向默认键盘的指针,然后我可以在该指针上调用 show()。该方法在项目提供的 sdk 上可用。
推荐阅读
- angular - 如何使用角度材料中的自动完成选项绑定输入字段(从 DB 到 UI / UI 到 DB)?
- r - 如何计算向量中符号的变化(正或负)
- python-3.x - 如果列表中没有数字,我该如何退出程序(python)
- excel - 使用类模块在类型内输入
- opencv - 如何使用opencv使白色像素更亮?
- android - 重新加载 Fragment 时,范围为 Fragment 的 ViewModel 不会被破坏
- python - In python is there a way to delete parts of a column?
- kubernetes - 普罗米修斯中覆盖标签的问题
- c++ - 在类构造函数初始化器列表中初始化 std::array :如果默认构造函数不可用,则用固定类填充值
- regex - 正则表达式:匹配前面没有任何空格的文本