Russian Qt Forum
Март 28, 2024, 20:00
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Глюк с virtual event() у MainWindow в Android
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Глюк с virtual event() у MainWindow в Android (Прочитано 3948 раз)
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Глюк с virtual event() у MainWindow в Android
«
:
Октябрь 02, 2017, 16:58 »
До сих пор с таким чудом не сталкивался. Обработчик event() в MainWindow в приложении для Android хронически пропускает через один DoubleClick. То есть, в нём есть
Код:
if( e->type() == QEvent::MouseButtonDblClick ) ...
Так вот оно true... на каждые 2 подряд двойных тапа на экран. Можно даже смело делать 4 тапа быстро подряд, чтобы гарантированно сработало. Сделал вывод в консоль - чего там в type() на самом деле, и получаю на первый двойной тап - только MouseButtonPress. Если через любой промежуток времени ещё раз сделать двойной тап, то прилетает MouseButtonDblClick.
НО! При этом я открываю ещё одно окно, тоже наследующее от MainWindow, и в нём тоже ловлю event() также точно - а там всё правильно работает.
Первое главное окно довольно сложное, на нём много всего. Пока не знаю, куда копать. Может кто уже сталкивался? Очевидно существенно, что это всё в Android.
Записан
2^7-1 == 127, задумайтесь...
Old
Джедай : наставник для всех
Offline
Сообщений: 4349
Re: Глюк с virtual event() у MainWindow в Android
«
Ответ #1 :
Октябрь 02, 2017, 17:15 »
Я смотрел-бы в первую очередь все установленные eventFilters.
Записан
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: Глюк с virtual event() у MainWindow в Android
«
Ответ #2 :
Октябрь 02, 2017, 17:29 »
Цитата: Old от Октябрь 02, 2017, 17:15
Я смотрел-бы в первую очередь все установленные eventFilters.
Код:
bool MainWindow::event(QEvent *e)
{
if( e->type()!=QEvent::UpdateRequest) qDebug()<<e->type();
if( e->type() == QEvent::MouseButtonDblClick )
{
............
}
if( e->type() == QEvent::HoverMove )
{
............
}
return e->type() == QEvent::Gesture ? gesture( static_cast<QGestureEvent*>( e ) )
: QWidget::event( e );
}
Больше ничего нет. Есть только перехваты жестов в конструкторе
Код:
grabGesture(Qt::PinchGesture);
grabGesture(Qt::TapAndHoldGesture);
grabGesture(Qt::TapGesture);
Всё.
Записан
2^7-1 == 127, задумайтесь...
Old
Джедай : наставник для всех
Offline
Сообщений: 4349
Re: Глюк с virtual event() у MainWindow в Android
«
Ответ #3 :
Октябрь 02, 2017, 17:33 »
Вы писали, что MainWindow сложный виджет, возможно сообщения перехватывают его дочерние виджеты.
Записан
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: Глюк с virtual event() у MainWindow в Android
«
Ответ #4 :
Октябрь 02, 2017, 17:53 »
Цитата: Old от Октябрь 02, 2017, 17:33
Вы писали, что MainWindow сложный виджет, возможно сообщения перехватывают его дочерние виджеты.
Те, которые перехыватывают - те перехватывают (кнопки, слайдеры), через них вообще тапы не проходят. Проблема с тапами туда, где нет перехватывающих виджетов. Там есть только виджеты, которые рисуют, у них нет перегруженных event(). И под ними QGraphicsView со сценой. Но во втором окне, которое правильно работает, тоже есть QGraphicsView со сценой. То есть, проблема не в них.
И потом - если бы перехватывали, то перехватывали бы каждый двойной тап, а не через один.
Записан
2^7-1 == 127, задумайтесь...
Old
Джедай : наставник для всех
Offline
Сообщений: 4349
Re: Глюк с virtual event() у MainWindow в Android
«
Ответ #5 :
Октябрь 02, 2017, 17:59 »
Долго не искал, для примера.
В qeffects.cpp есть QAlphaWidget, который устнавливает фильтр событий от самого qApp и обрабатывает двойной клик. И уверен таких классов относящихся к QGraphicsXXX еще масса.
А так дело ваше, не они - так не они.
Записан
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: Глюк с virtual event() у MainWindow в Android
«
Ответ #6 :
Октябрь 02, 2017, 18:11 »
Цитата: Old от Октябрь 02, 2017, 17:59
Долго не искал, для примера.
В qeffects.cpp есть QAlphaWidget, который устнавливает фильтр событий от самого qApp и обрабатывает двойной клик. И уверен таких классов относящихся к QGraphicsXXX еще масса.
А так дело ваше, не они - так не они.
В проблемных местах либо QLabel, лежащий на QGraphicsProxyWidget, либо производный от QWidget мой класс, также лежащий на QGraphicsProxyWidget. А прокси в свою очередь на QGraphicsScene и соответственно QGraphicsView. Всё.
Что самое странное - первый раз, то есть после запуска приложения, дабл-тап нормально пропускается. Второй раз уже нет.
«
Последнее редактирование: Октябрь 02, 2017, 18:16 от Гурман
»
Записан
2^7-1 == 127, задумайтесь...
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: Глюк с virtual event() у MainWindow в Android
«
Ответ #7 :
Октябрь 02, 2017, 18:51 »
ЫЫЫЫ!!!!.... Установил приложение на смартфон с Android 6 - глюка нет. Всё работает как полагается. Глюк есть на планшете с CyanogenMod 10.1 ака Android 4.1.1.
Записан
2^7-1 == 127, задумайтесь...
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...