void QGraphicsMozView::forceViewActiveFocus() { QGraphicsItem *parent = parentItem(); while (parent) { if (parent->flags() & QGraphicsItem::ItemIsFocusScope) parent->setFocus(Qt::OtherFocusReason); parent = parent->parentItem(); } setFocus(Qt::OtherFocusReason); if (d->mViewInitialized) { d->mView->SetIsActive(true); } }
/*! \overload Handles the given mouse \a event. */ void QDeclarativeTextEdit::mousePressEvent(QGraphicsSceneMouseEvent *event) { Q_D(QDeclarativeTextEdit); if (d->focusOnPress){ QGraphicsItem *p = parentItem();//###Is there a better way to find my focus scope? while(p) { if(p->flags() & QGraphicsItem::ItemIsFocusScope){ p->setFocus(); break; } p = p->parentItem(); } setFocus(true); } d->control->processEvent(event, QPointF(0, 0)); if (!event->isAccepted()) QDeclarativePaintedItem::mousePressEvent(event); }
void EnhancedGraphicsScene::mousePressEvent(QGraphicsSceneMouseEvent *event) { if(event->button() == Qt::LeftButton) clicked = true; QPointF mousePosition = event->scenePos(); QGraphicsItem* pItem = itemAt(mousePosition.x(), mousePosition.y(), QTransform()); // If no item is under the mouse when clicking, its a rubberband selection if (pItem != 0) { if((pItem->flags() & QGraphicsItem::ItemIsMovable) == 0) { rubberBandOn = true; } } QGraphicsScene::mousePressEvent(event); }
bool QtScrollerFilter::canStartScrollingAt_QAbstractScrollArea(QAbstractScrollArea *area, const QPoint &startPos) const { // don't start scrolling when a drag mode has been set. // don't start scrolling on a movable item. if (QGraphicsView *view = qobject_cast<QGraphicsView *>(area)) { if (view->dragMode() != QGraphicsView::NoDrag) return false; QGraphicsItem *childItem = view->itemAt(startPos); if (childItem && (childItem->flags() & QGraphicsItem::ItemIsMovable)) return false; } // don't start scrolling on a QAbstractSlider if (qobject_cast<QAbstractSlider *>(area->viewport()->childAt(startPos))) { return false; } return true; }