У меня есть проект 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
перемещается выше, но виртуальная клавиатура неt показать (хотя курсор отображается в ssoEdit
).Если я снова нажму ssoEdit
, появится клавиатура.
Я ищу, чтобы клавиатура отображалась и оставалась включенной при первом нажатии и перемещении ssoEdit
.
Я не знаю, что попробовать.Можно ли заставить клавиатуру появиться?Я должен отметить, что не могу использовать файлы QML.Просто C ++.
Я обновлю код позже, если необходимо.