Qt для Android отправляет MouseReleaseEvent через 1 секунду, не отпуская экран после изменения ориентации экрана - PullRequest
1 голос
/ 24 марта 2019

Если я реализую в простом приложении 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 срабатывает только тогда, когда я убираю пальцы с экрана. Опять же, это происходит только в том случае, если я хотя бы раз изменил ориентацию экрана.

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