本文整理汇总了C++中QWaylandInputDevice::setMouseFocus方法的典型用法代码示例。如果您正苦于以下问题:C++ QWaylandInputDevice::setMouseFocus方法的具体用法?C++ QWaylandInputDevice::setMouseFocus怎么用?C++ QWaylandInputDevice::setMouseFocus使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QWaylandInputDevice
的用法示例。
在下文中一共展示了QWaylandInputDevice::setMouseFocus方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: touchEvent
void LipstickCompositorWindow::touchEvent(QTouchEvent *event)
{
QWaylandSurface *m_surface = surface();
if (touchEventsEnabled() && m_surface) {
QList<QTouchEvent::TouchPoint> points = event->touchPoints();
if (m_mouseRegionValid && points.count() == 1 &&
event->touchPointStates() & Qt::TouchPointPressed &&
!m_mouseRegion.contains(points.at(0).pos().toPoint())) {
event->ignore();
return;
}
QWaylandInputDevice *inputDevice = m_surface->compositor()->defaultInputDevice();
event->accept();
if (inputDevice->mouseFocus() != m_surface) {
QPoint pointPos;
if (!points.isEmpty())
pointPos = points.at(0).pos().toPoint();
inputDevice->setMouseFocus(m_surface, pointPos, pointPos);
}
inputDevice->sendFullTouchEvent(event);
} else {
event->ignore();
}
}
示例2: handleTouchCancel
void LipstickCompositorWindow::handleTouchCancel()
{
QWaylandSurface *m_surface = surface();
if (!m_surface)
return;
QWaylandInputDevice *inputDevice = m_surface->compositor()->defaultInputDevice();
if (inputDevice->mouseFocus() == m_surface &&
(!isVisible() || !isEnabled() || !touchEventsEnabled())) {
inputDevice->sendTouchCancelEvent();
inputDevice->setMouseFocus(0, QPointF());
}
}
示例3: mousePressEvent
void LipstickCompositorWindow::mousePressEvent(QMouseEvent *event)
{
QWaylandSurface *m_surface = surface();
if (m_surface && (!m_mouseRegionValid || m_mouseRegion.contains(event->pos()))) {
QWaylandInputDevice *inputDevice = m_surface->compositor()->defaultInputDevice();
if (inputDevice->mouseFocus() != m_surface)
inputDevice->setMouseFocus(m_surface, event->pos(), event->globalPos());
inputDevice->sendMousePressEvent(event->button(), event->pos(), event->globalPos());
} else {
event->ignore();
}
}
示例4: mousePressEvent
void LipstickCompositorWindow::mousePressEvent(QMouseEvent *event)
{
QWaylandSurface *m_surface = surface();
if (m_surface && (!m_mouseRegionValid || m_mouseRegion.contains(event->pos())) &&
m_surface->inputRegionContains(event->pos()) && event->source() != Qt::MouseEventSynthesizedByQt) {
QWaylandInputDevice *inputDevice = m_surface->compositor()->defaultInputDevice();
if (inputDevice->mouseFocus() != this) {
inputDevice->setMouseFocus(this, event->pos(), event->globalPos());
if (m_focusOnTouch && inputDevice->keyboardFocus() != m_surface) {
takeFocus();
}
}
inputDevice->sendMousePressEvent(event->button(), event->pos(), event->globalPos());
} else {
event->ignore();
}
}
示例5: eventFilter
//.........这里部分代码省略.........
if (stuckMods & Qt::AltModifier)
input->sendKeyReleaseEvent(64); // native scancode for left alt
m_modifiers = mods;
}
}
break;
case QEvent::MouseButtonPress: {
QPointF local;
QMouseEvent *me = static_cast<QMouseEvent *>(event);
QWaylandSurface *targetSurface = surfaceAt(me->localPos(), &local);
if (m_dragKeyIsPressed && targetSurface) {
m_draggingWindow = targetSurface;
m_drag_diff = local;
} else {
if (targetSurface && input->keyboardFocus() != targetSurface) {
input->setKeyboardFocus(targetSurface);
m_surfaces.removeOne(targetSurface);
m_surfaces.append(targetSurface);
m_renderScheduler.start(0);
}
input->sendMousePressEvent(me->button(), local, me->localPos());
}
return true;
}
case QEvent::MouseButtonRelease: {
QWaylandSurface *targetSurface = input->mouseFocus();
if (m_draggingWindow) {
m_draggingWindow = 0;
m_drag_diff = QPointF();
} else {
QMouseEvent *me = static_cast<QMouseEvent *>(event);
QPointF localPos;
if (targetSurface)
localPos = toSurface(targetSurface, me->localPos());
input->sendMouseReleaseEvent(me->button(), localPos, me->localPos());
}
return true;
}
case QEvent::MouseMove: {
QMouseEvent *me = static_cast<QMouseEvent *>(event);
if (m_draggingWindow) {
m_draggingWindow->setPos(me->localPos() - m_drag_diff);
m_renderScheduler.start(0);
} else {
QPointF local;
QWaylandSurface *targetSurface = surfaceAt(me->localPos(), &local);
input->sendMouseMoveEvent(targetSurface, local, me->localPos());
}
break;
}
case QEvent::Wheel: {
QWheelEvent *we = static_cast<QWheelEvent *>(event);
input->sendMouseWheelEvent(we->orientation(), we->delta());
break;
}
case QEvent::KeyPress: {
QKeyEvent *ke = static_cast<QKeyEvent *>(event);
if (ke->key() == Qt::Key_Meta || ke->key() == Qt::Key_Super_L) {
m_dragKeyIsPressed = true;
}
m_modifiers = ke->modifiers();
QWaylandSurface *targetSurface = input->keyboardFocus();
if (targetSurface)
input->sendKeyPressEvent(ke->nativeScanCode());
break;
}
case QEvent::KeyRelease: {
QKeyEvent *ke = static_cast<QKeyEvent *>(event);
if (ke->key() == Qt::Key_Meta || ke->key() == Qt::Key_Super_L) {
m_dragKeyIsPressed = false;
}
m_modifiers = ke->modifiers();
QWaylandSurface *targetSurface = input->keyboardFocus();
if (targetSurface)
input->sendKeyReleaseEvent(ke->nativeScanCode());
break;
}
case QEvent::TouchBegin:
case QEvent::TouchUpdate:
case QEvent::TouchEnd:
{
QWaylandSurface *targetSurface = 0;
QTouchEvent *te = static_cast<QTouchEvent *>(event);
QList<QTouchEvent::TouchPoint> points = te->touchPoints();
QPoint pointPos;
if (!points.isEmpty()) {
pointPos = points.at(0).pos().toPoint();
targetSurface = surfaceAt(pointPos);
}
if (targetSurface && targetSurface != input->mouseFocus())
input->setMouseFocus(targetSurface, pointPos, pointPos);
if (input->mouseFocus())
input->sendFullTouchEvent(te);
break;
}
default:
break;
}
return false;
}