Если я реализую в простом приложении Qt Widget для Android MousePressEvent()
и MouseReleaseEvent()
, то сначала все работает нормально.
Если я изменяю ориентацию экрана (например, с книжного на альбомный), MousePressEvent
все равно срабатывает, как и ожидалось, но MouseReleaseEvent()
срабатывает автоматически примерно через 1 секунду, даже если он не отпущен.
Этого можно избежать, если я перееду на сенсорном экране менее чем за секунду.
При таком поведении даже события гостя больше не будут работать после того, как я изменил ориентацию экрана хотя бы один раз.
Я также получаю следующее предупреждение в отладчике:
W libtest5.so: QMetaObject :: invokeMethod: Нет такого метода Widget :: inputMethodQuery (Qt :: InputMethodQuery, QVariant)
До сих пор я не нашел помощи по stackoverflow. Я тестировал на разных версиях Qt до 5.12 и на разных устройствах Android
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QMouseEvent>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::mousePressEvent(QMouseEvent *event)
{
qDebug() << "press" << event->buttons();
}
void MainWindow::mouseReleaseEvent(QMouseEvent *event)
{
qDebug() << "release" << event->buttons();
}
void MainWindow::mouseMoveEvent(QMouseEvent *event)
{
qDebug() << "move"<< event->buttons();
}
Я ожидаю, что mouseReleaseEvent
срабатывает только тогда, когда я убираю пальцы с экрана. Опять же, это происходит только в том случае, если я хотя бы раз изменил ориентацию экрана.