Сообщение Re: mouse press & release & double click events от 01.02.2017 9:04
Изменено 01.02.2017 9:06 nen777w
Re: mouse press & release & double click events
N>Есть ли нормальный способ избежать этого?
Пытался сделать на таймере, (хотя это фигня полная)
Вот что я вижу в обработчиках событий. И наверно я чего то недопонимаю.
Код примерно такой:
Результат когда делаю doubleClick:
mousePressEvent
mouseReleaseEvent
mouseDoubleClickEvent <--почему он тут а не после следующих двух?
mousePressEvent
mouseReleaseEvent
dblclick_timeout <--почему сработал timout() у него запас 200ms еще и ему сделали stop(), разве он должен сработать? Делал ради хозмы 1000ms та же катина!!!
Ладно с этим порядком событий, видимо какая то особенность реализации (надо код смотреть). Но блин почему таймер срабатывает???
Видимо прийдется выкинуть идею про mouseDoubleClickEvent() и делать что то свое основываясь на manhatanDistance().
Пытался сделать на таймере, (хотя это фигня полная)
Вот что я вижу в обработчиках событий. И наверно я чего то недопонимаю.
Код примерно такой:
CTOR()
{
m_dblclick_timer.setInterval(QApplication::doubleClickInterval() + 200);
m_dblclick_timer.setSingleShot(true);
connect(&d->m_dblclick_timer, SIGNAL(timeout()), this, SLOT(dblclick_timeout()));
}
mousePressEvent()
{
qDebug() << "mousePressEvent";
if(!d->m_dblclick_timer.isActive()) {
d->m_dblclick_timer.start();
}
QWidget::mousePressEvent(event);
}
mouseReleaseEvent()
{
qDebug() << "mouseReleaseEvent";
QWidget::mouseReleaseEvent(event);
}
mouseDoubleClickEvent()
{
qDebug() << "mouseDoubleClickEvent";
d->m_dblclick_timer.stop();
QWidget::mouseDoubleClickEvent(event);
}
Результат когда делаю doubleClick:
mousePressEvent
mouseReleaseEvent
mouseDoubleClickEvent <--почему он тут а не после следующих двух?
mousePressEvent
mouseReleaseEvent
dblclick_timeout <--почему сработал timout() у него запас 200ms еще и ему сделали stop(), разве он должен сработать? Делал ради хозмы 1000ms та же катина!!!
Ладно с этим порядком событий, видимо какая то особенность реализации (надо код смотреть). Но блин почему таймер срабатывает???
Видимо прийдется выкинуть идею про mouseDoubleClickEvent() и делать что то свое основываясь на manhatanDistance().
Re: mouse press & release & double click events
N>Есть ли нормальный способ избежать этого?
Пытался сделать на таймере, (хотя это фигня полная)
Вот что я вижу в обработчиках событий. И наверно я чего то недопонимаю.
Код примерно такой:
Результат когда делаю doubleClick:
mousePressEvent
mouseReleaseEvent
mouseDoubleClickEvent <--почему он тут а не после следующих двух?
mousePressEvent
mouseReleaseEvent
dblclick_timeout <--почему сработал timout() у него запас 200ms еще и ему сделали stop(), разве он должен сработать? Делал ради хохмы 1000ms та же катина!!!
Ладно с этим порядком событий, видимо какая то особенность реализации (надо код смотреть). Но блин почему таймер срабатывает???
Видимо прийдется выкинуть идею про mouseDoubleClickEvent() и делать что то свое основываясь на manhatanDistance().
Пытался сделать на таймере, (хотя это фигня полная)
Вот что я вижу в обработчиках событий. И наверно я чего то недопонимаю.
Код примерно такой:
CTOR()
{
m_dblclick_timer.setInterval(QApplication::doubleClickInterval() + 200);
m_dblclick_timer.setSingleShot(true);
connect(&d->m_dblclick_timer, SIGNAL(timeout()), this, SLOT(dblclick_timeout()));
}
mousePressEvent()
{
qDebug() << "mousePressEvent";
if(!d->m_dblclick_timer.isActive()) {
d->m_dblclick_timer.start();
}
QWidget::mousePressEvent(event);
}
mouseReleaseEvent()
{
qDebug() << "mouseReleaseEvent";
QWidget::mouseReleaseEvent(event);
}
mouseDoubleClickEvent()
{
qDebug() << "mouseDoubleClickEvent";
d->m_dblclick_timer.stop();
QWidget::mouseDoubleClickEvent(event);
}
Результат когда делаю doubleClick:
mousePressEvent
mouseReleaseEvent
mouseDoubleClickEvent <--почему он тут а не после следующих двух?
mousePressEvent
mouseReleaseEvent
dblclick_timeout <--почему сработал timout() у него запас 200ms еще и ему сделали stop(), разве он должен сработать? Делал ради хохмы 1000ms та же катина!!!
Ладно с этим порядком событий, видимо какая то особенность реализации (надо код смотреть). Но блин почему таймер срабатывает???
Видимо прийдется выкинуть идею про mouseDoubleClickEvent() и делать что то свое основываясь на manhatanDistance().