Russian Qt Forum
Март 28, 2024, 16:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Полностью отобрать жест виджетом у главного окна.  (Прочитано 1804 раз)
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« : Июнь 06, 2018, 23:19 »

Есть у меня кнопки, которым надо включить автоповтор. Но главное окно само обрабатывает жест Tap&Hold. По умолчанию кнопке долгое нажатие не достаётся.

Код:
bool MainWindow::event(QEvent *e)
{
...
    return e->type() == QEvent::Gesture ? gesture( static_cast<QGestureEvent*>( e ) )
                                        : QWidget::event( e );
}

Но есть у кнопки вызов QWidget::grabGesture(Qt::GestureType gesture, Qt::GestureFlags flags = Qt::GestureFlags()). И он действительно помогает - кнопка начинает работать с автоповтором. Но почему-то жест не перехватывается полностью, и главное окно тоже его отрабатывает. Выглядит это забавно - у кнопки интервал на автоповтор короткий, она начинает повторять, а потом через заданное у главного окна время оно отрабатывает этот же жест, и затем снова работает автоповтор кнопки. Второй параметр - флаги - на это не влияет, он либо наоборот, разрешает передавать жесты родителю, либо запрещает передавать потомкам. А мне надо запретить обрабатывать жест родителем, если он обрабатывается потомком. И чё-то я не вижу, как это сделать... Причём сделать это надо не для всех кнопок, а только для тех, у которых я в пропертях включаю автоповтор, то есть по условию.

Код:
   if( autoRepeat() )
        grabGesture( Qt::TapAndHoldGesture );
- это в кнопке. Что делать в главном окне - не понятно. Кнопок с автоповтором несколько, кнопок без автоповтора тоже несколько, им перехват жеста не обязателен (хотя возможен).
« Последнее редактирование: Июнь 06, 2018, 23:24 от Гурман » Записан

2^7-1 == 127, задумайтесь...
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.086 секунд. Запросов: 22.