Hello.

I have a serious issue where the virtual keyboard on Android pushes my whole application off the screen. This happens when the keyboard is visible and I rotate the device (going to portrait mode or back from it).

Normally, I resize my main window's centralWidget() (using QMainWindow) when the keyboard size changes:

  connect(qApp->inputMethod(), &QInputMethod::keyboardRectangleChanged,
          this, [this]
  {
      auto newSize = size();
      newSize.setHeight(height()
          - qApp->inputMethod()->keyboardRectangle().height());
      centralWidget()->setMaximumSize(newSize);
  });

That works fine only as long as the device doesn't change orientation. When I pop-up the keyboard with:

  qApp->inputMethod()->show();

the above code is called and my window adapts its size.

But when I rotate the device while the keyboard is visible, my main window (and thus the central widget) are pushed upwards, so the top part of my application isn't visible anymore :-/ The size (QWidget::size()) is still correct, but there's an empty space between the top of the keyboard and the bottom of my window.

Pressing the "back" button on the device hides the keyboard and brings the application window back down and makes it visible again. But I need it to be visible *while* the keyboard is shown.

The position (QWidget::pos()) of the main window and the central widget are still (0,0) when that happens, and doing a move(0, 0), hoping to bring them back on-screen doesn't do anything.

How can I keep that from happening? The application becomes useless if you can't see it on the screen :-/ It seems there's something I need to do when the device changes orientation? But I don't know what.

_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to