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

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

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: doubleClick по чекбоксу во вьюхе  (Прочитано 19922 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #15 : Март 15, 2016, 14:37 »

Попробуйте отловить координаты бубочки через QStyle::subElementRect подобрав SE_ константу. И еще - смутно помню, но если просто перекрыть событие doubleClicked (или e->ignore() ?), то будет вызываться просто второй press (что и требуется).  
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #16 : Март 15, 2016, 14:40 »

Пробовал обмануть хитрый Qt Улыбающийся
Код
C++ (Qt)
   const int interval = qApp->doubleClickInterval();
   qApp->setDoubleClickInterval(0);
   qApp->setDoubleClickInterval(interval);
 
Не помогло
« Последнее редактирование: Март 15, 2016, 15:24 от __Heaven__ » Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #17 : Март 15, 2016, 14:46 »

Я не хочу его полностью перекрывать. Мне необходим даблклик при нажатии на лэйбл. См. аттач.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #18 : Март 15, 2016, 15:19 »

Я не хочу его полностью перекрывать. Мне необходим даблклик при нажатии на лэйбл. См. аттач.
Я понял, но в любом случае Вам нужен QRect бубочки (чтобы так перекрыть а так нет). Надо разрывать QStyledItemViewOption (сначала сделав initStyleOptions)
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #19 : Март 15, 2016, 15:22 »

Да, Верес это и предложил. Но этот метод по степени костыльности в моём представлении стоит на первом месте. Улыбающийся Пока что гляжу в сторону костыля с запуском таймера нажатия на чекбокс.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #20 : Март 15, 2016, 15:31 »

Да, Верес это и предложил. Но этот метод по степени костыльности в моём представлении стоит на первом месте. Улыбающийся Пока что гляжу в сторону костыля с запуском таймера нажатия на чекбокс.
Никакой "костыльности" здесь нет, если конечно не срисовывать чекбокс с экрана, а получить его QRect средствами Qt. Это 100% легально, для всех платформ и стилей
Записан
Bepec
Гость
« Ответ #21 : Март 15, 2016, 15:48 »

Чем костыльнее метод, тем он вернее - работает в 50% случаев Веселый
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #22 : Март 15, 2016, 16:06 »

50% и я добился  Смеющийся Смеющийся Смеющийся Смеющийся Веселый Веселый
Код
C++ (Qt)
   const int interval = qApp->doubleClickInterval();
   qApp->setDoubleClickInterval(0);
   auto magic = [=](){qApp->setDoubleClickInterval(interval);};
   QTimer::singleShot(interval, magic);
 
Записан
Bepec
Гость
« Ответ #23 : Март 15, 2016, 16:12 »

Эээ... И это даёт возможность сделать дабл клик на надписи? Веселый
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #24 : Март 15, 2016, 16:20 »

Представьте, да! Улыбающийся
Смысл в том, что при затрагивании переключателя запускается этот код. Он на интервал даблклика отключает возможность даблкликать Веселый
Но есть жирный минус. Если очень быстро тыкать по чекбоксу, то наступит момент, когда предыдущий singleShot откроет возможность расценить клик как даблклик.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #25 : Март 15, 2016, 16:26 »

Если что,
I did it for the lulz Улыбающийся
Записан
Bepec
Гость
« Ответ #26 : Март 15, 2016, 18:51 »

Да, теперь моя очередь сказать -
Цитировать
Но этот метод по степени костыльности в моём представлении стоит на первом месте. Веселый

PS но сам факт что мысль пошла по этому пути интересен Веселый
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #27 : Март 16, 2016, 13:43 »

Если я правильно понял, при двойном клике на чекбокс поведение должно быть таким же как при одиночном. Это вообще-то спорно (нужно ли такое). Ну ладно, аттач
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #28 : Март 16, 2016, 13:57 »

Не, не оно.
Код
C++ (Qt)
   QObject::connect(treeW, &QTreeWidget::itemDoubleClicked, []{qDebug() << "doubleclicked";});
 

Надо, чтобы галка тыкалась при каждом щелчке, а вот этот сигнал не эмитился при сколь угодно частых тыках по галке.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #29 : Март 16, 2016, 14:28 »

Надо, чтобы галка тыкалась при каждом щелчке, а вот этот сигнал не эмитился при сколь угодно частых тыках по галке.
А изменить пару строк в готовом примере читатель Свттера не может?
Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


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