Hey,
that was also my first consideration, but after having a look in QWidget::event, i found this:
....
{
#ifndef Q_WS_MAC
QTouchEvent *touchEvent = static_cast<QTouchEvent *>(event);
const QTouchEvent::TouchPoint &touchPoint = touchEvent->touchPoints().first();
if (touchPoint.isPrimary() || touchEvent->deviceType() == QTouchEvent::TouchPad)
break;
// fake a mouse event!
switch (touchEvent->type()) {
eventType
= QEvent::MouseButtonPress;
break;
eventType
= QEvent::MouseMove;
break;
eventType
= QEvent::MouseButtonRelease;
break;
default:
Q_ASSERT(!true);
break;
}
if (eventType
== QEvent::None) break;
touchPoint.pos().toPoint(),
touchPoint.screenPos().toPoint(),
Qt::LeftButton,
Qt::LeftButton,
touchEvent->modifiers());
#endif // Q_WS_MAC
break;
...
....
case QEvent::TouchBegin:
case QEvent::TouchUpdate:
case QEvent::TouchEnd:
{
#ifndef Q_WS_MAC
QTouchEvent *touchEvent = static_cast<QTouchEvent *>(event);
const QTouchEvent::TouchPoint &touchPoint = touchEvent->touchPoints().first();
if (touchPoint.isPrimary() || touchEvent->deviceType() == QTouchEvent::TouchPad)
break;
// fake a mouse event!
QEvent::Type eventType = QEvent::None;
switch (touchEvent->type()) {
case QEvent::TouchBegin:
eventType = QEvent::MouseButtonPress;
break;
case QEvent::TouchUpdate:
eventType = QEvent::MouseMove;
break;
case QEvent::TouchEnd:
eventType = QEvent::MouseButtonRelease;
break;
default:
Q_ASSERT(!true);
break;
}
if (eventType == QEvent::None)
break;
QMouseEvent mouseEvent(eventType,
touchPoint.pos().toPoint(),
touchPoint.screenPos().toPoint(),
Qt::LeftButton,
Qt::LeftButton,
touchEvent->modifiers());
(void) QApplication::sendEvent(this, &mouseEvent);
#endif // Q_WS_MAC
break;
...
To copy to clipboard, switch view to plain text mode
I am on Windows7 with QT 4.8.3! Dont know if it changed later on, but in this case the mouse event gets generated inside QWidget.
Are my considerations wrong? Where is the mousevent generated?
Any suggestions?
Bookmarks