Доброго времени суток!
Сделал виртуальную клавиатуру по примеру с QInputContext
Вроде все отлично работает, но заметил такую особенность
Если вызвать клавиатуру в модальном диалоговом окне, у которого при создании задан родитель
C++ (Qt)
MyDialog dlg( this ); // parent is set
dlg.exec();
и после этого закрыть это окно, то для моего класса, наследуемого от QInputContext, в функцию filterEvent присылается
событие QEvent::CloseSoftwareInputPanel, по которому я закрываю и клавиатуру
C++ (Qt)
bool MyInputPanelContext::filterEvent(const QEvent* event)
{
if (event->type() == QEvent::RequestSoftwareInputPanel) {
updatePosition();
inputPanel->show();
return true;
} else if (event->type() == QEvent::CloseSoftwareInputPanel) {
inputPanel->hide();
return true;
}
return false;
}
Но! если парент не задан
C++ (Qt)
MyDialog dlg( NULL ); // no parent
dlg.exec();
то после вызова клавиатуры в таком окне, и его закрытия событие QEvent::CloseSoftwareInputPanel не приходит и следственно клавиатуру я не скрываю
Может сталкивался кто с этой проблемой, или объяснить почему так происходит?