Виртуальная клавиатура скрыта на focusEvent - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть проект 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 ++.

Я обновлю код позже, если необходимо.

1 Ответ

0 голосов
/ 19 апреля 2019

Я закрою вопрос, когда нашел решение. Был метод, который возвращал указатель на клавиатуру по умолчанию, а затем я мог вызвать show () для этого указателя. Эти методы были доступны на SDK, поставляемом с проектом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...