本文整理汇总了C++中QTouchEvent::deviceType方法的典型用法代码示例。如果您正苦于以下问题:C++ QTouchEvent::deviceType方法的具体用法?C++ QTouchEvent::deviceType怎么用?C++ QTouchEvent::deviceType使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QTouchEvent
的用法示例。
在下文中一共展示了QTouchEvent::deviceType方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: event
bool WWidget::event(QEvent* e) {
if (e->type() == QEvent::ToolTip) {
updateTooltip();
} else if (isEnabled()) {
switch(e->type()) {
case QEvent::TouchBegin:
case QEvent::TouchUpdate:
case QEvent::TouchEnd:
{
QTouchEvent* touchEvent = dynamic_cast<QTouchEvent*>(e);
if (touchEvent->deviceType() != QTouchEvent::TouchScreen) {
break;
}
// fake a mouse event!
QEvent::Type eventType = QEvent::None;
switch (touchEvent->type()) {
case QEvent::TouchBegin:
eventType = QEvent::MouseButtonPress;
if (touchIsRightButton()) {
// touch is right click
m_activeTouchButton = Qt::RightButton;
} else {
m_activeTouchButton = Qt::LeftButton;
}
break;
case QEvent::TouchUpdate:
eventType = QEvent::MouseMove;
break;
case QEvent::TouchEnd:
eventType = QEvent::MouseButtonRelease;
break;
default:
DEBUG_ASSERT(false);
break;
}
const QTouchEvent::TouchPoint &touchPoint =
touchEvent->touchPoints().first();
QMouseEvent mouseEvent(eventType,
touchPoint.pos().toPoint(),
touchPoint.screenPos().toPoint(),
m_activeTouchButton, // Button that causes the event
Qt::NoButton, // Not used, so no need to fake a proper value.
touchEvent->modifiers());
return QWidget::event(&mouseEvent);
}
default:
break;
}
}
return QWidget::event(e);
}
示例2: event
bool QtCanvas::event(QEvent *event) {
switch (event->type()) {
case QEvent::TouchBegin:
case QEvent::TouchUpdate:
case QEvent::TouchEnd:
{
QTouchEvent* touchEvent = static_cast<QTouchEvent*>(event);
QList<QTouchEvent::TouchPoint> touchPoints = touchEvent->touchPoints();
event->accept();
qint8 deviceType = touchEvent->deviceType();
std::deque<tgt::TouchPoint> tps;
int states = 0;
foreach (const QTouchEvent::TouchPoint &p, touchPoints) {
int id = p.id();
tgt::vec2 pos(p.pos().x(), p.pos().y());
int state = p.state();
bool primary = p.isPrimary();
states = states | state;
tgt::TouchPoint tp;
tp.setId(id);
tp.setPos(pos);
tp.setState((tgt::TouchPoint::State)state);
tp.setPrimary(primary);
tps.push_back(tp);
}
tgt::TouchEvent * te = new tgt::TouchEvent(tgt::Event::MODIFIER_NONE, (tgt::TouchPoint::State)states, (tgt::TouchEvent::DeviceType)deviceType, tps);
eventHandler_->broadcast(te);
break;
}
default:
return QGLWidget::event(event);
}
示例3: event
bool QIGraphicsView::event(QEvent *pEvent)
{
/* Handle known event types: */
switch (pEvent->type())
{
case QEvent::TouchBegin:
{
/* Parse the touch event: */
QTouchEvent *pTouchEvent = static_cast<QTouchEvent*>(pEvent);
AssertPtrReturn(pTouchEvent, QGraphicsView::event(pEvent));
/* For touch-screen event we have something special: */
if (pTouchEvent->deviceType() == QTouchEvent::TouchScreen)
{
/* Remember where the scrolling was started: */
m_iVerticalScrollBarPosition = verticalScrollBar()->value();
/* Allow further touch events: */
pEvent->accept();
/* Mark event handled: */
return true;
}
break;
}
case QEvent::TouchUpdate:
{
/* Parse the touch-event: */
QTouchEvent *pTouchEvent = static_cast<QTouchEvent*>(pEvent);
AssertPtrReturn(pTouchEvent, QGraphicsView::event(pEvent));
/* For touch-screen event we have something special: */
if (pTouchEvent->deviceType() == QTouchEvent::TouchScreen)
{
/* Determine vertical shift (inverted): */
const QTouchEvent::TouchPoint point = pTouchEvent->touchPoints().first();
const int iShift = (int)(point.startPos().y() - point.pos().y());
/* Calculate new scroll-bar value according calculated shift: */
int iNewScrollBarValue = m_iVerticalScrollBarPosition + iShift;
/* Make sure new scroll-bar value is within the minimum/maximum bounds: */
iNewScrollBarValue = qMax(verticalScrollBar()->minimum(), iNewScrollBarValue);
iNewScrollBarValue = qMin(verticalScrollBar()->maximum(), iNewScrollBarValue);
/* Apply calculated scroll-bar shift finally: */
verticalScrollBar()->setValue(iNewScrollBarValue);
/* Mark event handled: */
return true;
}
break;
}
case QEvent::TouchEnd:
{
/* Parse the touch event: */
QTouchEvent *pTouchEvent = static_cast<QTouchEvent*>(pEvent);
AssertPtrReturn(pTouchEvent, QGraphicsView::event(pEvent));
/* For touch-screen event we have something special: */
if (pTouchEvent->deviceType() == QTouchEvent::TouchScreen)
{
/* Reset the scrolling start position: */
m_iVerticalScrollBarPosition = 0;
/* Mark event handled: */
return true;
}
break;
}
default:
break;
}
/* Call to base-class: */
return QGraphicsView::event(pEvent);
}
示例4: notify
bool MixxxApplication::notify(QObject* target, QEvent* event) {
switch (event->type()) {
case QEvent::TouchBegin:
case QEvent::TouchUpdate:
case QEvent::TouchEnd:
{
QTouchEvent* touchEvent = static_cast<QTouchEvent*>(event);
QList<QTouchEvent::TouchPoint> touchPoints = touchEvent->touchPoints();
QEvent::Type eventType = QEvent::None;
Qt::MouseButtons buttons = Qt::NoButton;
QWidget* fakeMouseWidget = NULL;
bool baseReturn;
//qDebug() << "&" << touchEvent->type() << target;
if (touchEvent->deviceType() != QTouchEvent::TouchScreen) {
break;
}
switch (event->type()) {
case QEvent::TouchBegin:
// try to deliver as touch event
baseReturn = QApplication::notify(target, event);
if (dynamic_cast<MixxxMainWindow*>(touchEvent->widget())) {
// the touchEvent has fallen trough to the MixxxMainWindow, because there
// was no touch enabled widget found.
// Now we resent this event and all following events for this touch point
// as Mouse events.
eventType = QEvent::MouseButtonPress;
if (touchIsRightButton()) {
// touch is right click
m_activeTouchButton = Qt::RightButton;
buttons = Qt::RightButton;
} else {
m_activeTouchButton = Qt::LeftButton;
buttons = Qt::LeftButton;
}
m_fakeMouseSourcePointId = touchPoints.first().id();
m_fakeMouseWidget = dynamic_cast<QWidget*>(target);
fakeMouseWidget = m_fakeMouseWidget;
break;
}
return baseReturn;
case QEvent::TouchUpdate:
if (m_fakeMouseWidget) {
eventType = QEvent::MouseMove;
buttons = m_activeTouchButton;
fakeMouseWidget = m_fakeMouseWidget;
break;
}
return QApplication::notify(target, event);
case QEvent::TouchEnd:
if (m_fakeMouseWidget) {
eventType = QEvent::MouseButtonRelease;
m_fakeMouseSourcePointId = touchPoints.first().id();
fakeMouseWidget = m_fakeMouseWidget;
m_fakeMouseWidget = NULL;
break;
}
return QApplication::notify(target, event);
default:
return QApplication::notify(target, event);
}
for (int i = 0; i < touchPoints.count(); ++i) {
const QTouchEvent::TouchPoint& touchPoint = touchPoints.at(i);
if (touchPoint.id() == m_fakeMouseSourcePointId) {
QMouseEvent mouseEvent(eventType,
fakeMouseWidget->mapFromGlobal(touchPoint.screenPos().toPoint()),
touchPoint.screenPos().toPoint(),
m_activeTouchButton, // Button that causes the event
buttons,
touchEvent->modifiers());
//qDebug() << "#" << mouseEvent.type() << mouseEvent.button() << mouseEvent.buttons() << mouseEvent.pos() << mouseEvent.globalPos();
//if (m_fakeMouseWidget->focusPolicy() & Qt::ClickFocus) {
// fakeMouseWidget->setFocus();
//}
QApplication::notify(fakeMouseWidget, &mouseEvent);
return true;
}
}
//qDebug() << "return false";
return false;
break;
}
case QEvent::MouseButtonRelease:
{
bool ret = QApplication::notify(target, event);
if (m_fakeMouseWidget) {
// It may happen the faked mouse event was grabbed by a non touch window.
// eg.: if we have started to drag by touch.
// In this case X11 generates a MouseButtonRelease instead of a TouchPointReleased Event.
// QApplication still tracks the Touch point and prevent touch to other widgets
// So we need to fake the Touch release event as well to clean up
// QApplicationPrivate::widgetForTouchPointId and QApplicationPrivate::appCurrentTouchPoints;
m_fakeMouseWidget = NULL; // Disable MouseButtonRelease fake
QList<QTouchEvent::TouchPoint> touchPoints;
QTouchEvent::TouchPoint tp;
//.........这里部分代码省略.........