void QGraph::mouseReleaseEvent(QMouseEvent *e){ pushed &= ~e->button(); this->setCursor(QCursor(Qt::CrossCursor)); if(e->button() == Qt::LeftButton){ if((toViewport(press) - toViewport(e->pos())).isNull()) return; QPoint p=toViewport(e->pos())+viewport.topLeft(); QPoint p1=toViewport(press)+viewport.topLeft(); viewport = QRect(p1, p); if(viewport.bottom() > viewport.top()){ int a=viewport.bottom(); viewport.setBottom(viewport.top()); viewport.setTop(a); } if(viewport.left() > viewport.right()){ int a=viewport.left(); viewport.setLeft(viewport.right()); viewport.setRight(a); } update_scale(); update_points(); sendStatus(QString("(%1, %2)-(%3, %4)").arg(viewport.left()).arg(viewport.top()).arg(viewport.right()).arg(viewport.bottom())); } this->repaint(false); }
void QtGradientStopsWidgetPrivate::setupMove(QtGradientStop *stop, int x) { m_model->setCurrentStop(stop); int viewportX = qRound(toViewport(stop->position())); m_moveOffset = x - viewportX; QList<QtGradientStop *> stops = m_stops; m_stops.clear(); QListIterator<QtGradientStop *> itStop(stops); while (itStop.hasNext()) { QtGradientStop *s = itStop.next(); if (m_model->isSelected(s) || s == stop) { m_moveStops[s] = s->position() - stop->position(); m_stops.append(s); } else { m_moveOriginal[s->position()] = s->color(); } } itStop.toFront(); while (itStop.hasNext()) { QtGradientStop *s = itStop.next(); if (!m_model->isSelected(s)) m_stops.append(s); } m_stops.removeAll(stop); m_stops.prepend(stop); }
void QtGradientStopsWidgetPrivate::ensureVisible(double x) { double viewX = toViewport(x); if (viewX < 0 || viewX > q_ptr->viewport()->size().width()) { int max = q_ptr->horizontalScrollBar()->maximum(); int newVal = qRound(x * (max + m_scaleFactor) - m_scaleFactor / 2); q_ptr->horizontalScrollBar()->setValue(newVal); } }
void QGraph::mousePressEvent(QMouseEvent *e){ pushed |= e->button(); //Left=1; Right=1<<1=2; Center=1<<2=4; Compatibilize with 3d's graph? // qDebug("%d", toViewport(e->pos()).x()); if(e->button() == Qt::LeftButton || e->button() == Qt::MidButton){ press = e->pos(); ant = toViewport(e->pos()); this->setCursor(QCursor(Qt::PointingHandCursor)); } }
void QGraph::mouseMoveEvent(QMouseEvent *e){ mark=calcImage(fromWidget(e->pos())); if(pushed & Qt::MidButton && ant != toViewport(e->pos())){ QPoint rel = e->pos() - press - (toWidget(.5,.5)-toWidget(0.,0.)); rel = toViewport(rel); viewport.setLeft(viewport.left() - rel.x()); viewport.setRight(viewport.right() - rel.x()); viewport.setTop(viewport.top() - rel.y()); viewport.setBottom(viewport.bottom() - rel.y()); update_points(); press = e->pos(); ant = toViewport(e->pos()); valid=false; sendStatus(QString("(%1, %2)-(%3, %4)").arg(viewport.left()).arg(viewport.top()).arg(viewport.right()).arg(viewport.bottom())); } else if(pushed == Qt::LeftButton) { last = e->pos(); } else if(pushed==0) sendStatus(QString("x=%1 y=%2") .arg(mark.x(),3,'f',2).arg(mark.y(),3,'f',2)); this->repaint(false); }
QtGradientStop *QtGradientStopsWidgetPrivate::stopAt(const QPoint &viewportPos) const { double posY = m_handleSize / 2; QListIterator<QtGradientStop *> itStop(m_stops); while (itStop.hasNext()) { QtGradientStop *stop = itStop.next(); double posX = toViewport(stop->position()); double x = viewportPos.x() - posX; double y = viewportPos.y() - posY; if ((m_handleSize * m_handleSize / 4) > (x * x + y * y)) return stop; } return 0; }
void QtGradientWidgetPrivate::paintPoint(QPainter *painter, const QPointF &point, double size) const { QPointF pf = toViewport(point); QRectF rf = pointRect(pf, size); QPen pen; pen.setWidthF(1); QColor alphaZero = Qt::white; alphaZero.setAlpha(0); painter->save(); painter->drawEllipse(rf); /* painter->save(); QLinearGradient lgV(0, rf.top(), 0, rf.bottom()); lgV.setColorAt(0, alphaZero); lgV.setColorAt(0.25, Qt::white); lgV.setColorAt(0.25, Qt::white); lgV.setColorAt(1, alphaZero); pen.setBrush(lgV); painter->setPen(pen); painter->drawLine(QPointF(pf.x(), rf.top()), QPointF(pf.x(), rf.bottom())); QLinearGradient lgH(rf.left(), 0, rf.right(), 0); lgH.setColorAt(0, alphaZero); lgH.setColorAt(0.5, Qt::white); lgH.setColorAt(1, alphaZero); pen.setBrush(lgH); painter->setPen(pen); painter->drawLine(QPointF(rf.left(), pf.y()), QPointF(rf.right(), pf.y())); painter->restore(); */ painter->restore(); }