diff --git a/src/libs/vmisc/def.cpp b/src/libs/vmisc/def.cpp index 9e4276438..eba396865 100644 --- a/src/libs/vmisc/def.cpp +++ b/src/libs/vmisc/def.cpp @@ -439,6 +439,28 @@ void SetOverrideCursor(const QString &pixmapPath, int hotX, int hotY) #endif } +//--------------------------------------------------------------------------------------------------------------------- +void SetOverrideCursor(Qt::CursorShape shape) +{ +#ifndef QT_NO_CURSOR + QPixmap oldPixmap; + QCursor* pOldCursor = QGuiApplication::overrideCursor(); + if (pOldCursor != 0) + { + oldPixmap = pOldCursor->pixmap(); + } + QCursor cursor(shape); + QPixmap newPixmap = cursor.pixmap(); + if (oldPixmap.toImage() != newPixmap.toImage()) + { + QApplication::setOverrideCursor(cursor); + } + +#else + Q_UNUSED(shape); +#endif +} + //--------------------------------------------------------------------------------------------------------------------- void RestoreOverrideCursor(const QString &pixmapPath) { diff --git a/src/libs/vmisc/def.h b/src/libs/vmisc/def.h index 60399132f..91f674346 100644 --- a/src/libs/vmisc/def.h +++ b/src/libs/vmisc/def.h @@ -595,8 +595,10 @@ extern const QString trueStr; extern const QString falseStr; void SetOverrideCursor(const QString & pixmapPath, int hotX = -1, int hotY = -1); +void SetOverrideCursor(Qt::CursorShape shape); void RestoreOverrideCursor(const QString & pixmapPath); + extern const qreal PrintDPI; double ToPixel(double val, const Unit &unit) Q_REQUIRED_RESULT; diff --git a/src/libs/vtools/tools/vtextgraphicsitem.cpp b/src/libs/vtools/tools/vtextgraphicsitem.cpp index 408a0d73d..cf3653d95 100644 --- a/src/libs/vtools/tools/vtextgraphicsitem.cpp +++ b/src/libs/vtools/tools/vtextgraphicsitem.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include #include "../vmisc/def.h" @@ -95,7 +96,7 @@ void VTextGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem fnt.setWeight(tl.m_eFontWeight); fnt.setStyle(tl.m_eStyle); painter->setFont(fnt); - painter->drawText(0, iY, boundingRect().width(), iH, tl.m_eAlign, tl.m_qsText); + painter->drawText(0, iY, qRound(boundingRect().width()), iH, tl.m_eAlign, tl.m_qsText); iY += iH + SPACING; } @@ -113,8 +114,8 @@ void VTextGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem if (m_eMode == mResize) { - painter->drawLine(0, 0, m_rectBoundingBox.width(), m_rectBoundingBox.height()); - painter->drawLine(0, m_rectBoundingBox.height(), m_rectBoundingBox.width(), 0); + painter->drawLine(0, 0, qRound(m_rectBoundingBox.width()), qRound(m_rectBoundingBox.height())); + painter->drawLine(0, qRound(m_rectBoundingBox.height()), qRound(m_rectBoundingBox.width()), 0); } } else @@ -130,8 +131,8 @@ void VTextGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem painter->setBrush(Qt::NoBrush); int iTop = ROTATE_RECT - ROTATE_ARC; int iLeft = ROTATE_RECT - ROTATE_ARC; - int iRight = m_rectBoundingBox.width() - ROTATE_RECT; - int iBottom = m_rectBoundingBox.height() - ROTATE_RECT; + int iRight = qRound(m_rectBoundingBox.width()) - ROTATE_RECT; + int iBottom = qRound(m_rectBoundingBox.height()) - ROTATE_RECT; painter->drawArc(iLeft, iTop, ROTATE_ARC, ROTATE_ARC, 180*16, -90*16); painter->drawArc(iRight, iTop, ROTATE_ARC, ROTATE_ARC, 90*16, -90*16); painter->drawArc(iLeft, iBottom, ROTATE_ARC, ROTATE_ARC, 270*16, -90*16); @@ -221,6 +222,7 @@ void VTextGraphicsItem::mousePressEvent(QGraphicsSceneMouseEvent *pME) if (m_rectResize.contains(pME->pos()) == true) { m_eMode = mResize; + SetOverrideCursor(Qt::SizeFDiagCursor); } else { @@ -236,6 +238,14 @@ void VTextGraphicsItem::mousePressEvent(QGraphicsSceneMouseEvent *pME) //--------------------------------------------------------------------------------------------------------------------- void VTextGraphicsItem::mouseMoveEvent(QGraphicsSceneMouseEvent* pME) { + if (m_rectResize.contains(pME->pos()) == true) + { + SetOverrideCursor(Qt::SizeFDiagCursor); + } + else + { + RestoreOverrideCursor(cursorArrowOpenHand); + } QPointF ptDiff = pME->scenePos() - m_ptStart; if (m_eMode == mMove) { diff --git a/src/libs/vtools/tools/vtooldetail.cpp b/src/libs/vtools/tools/vtooldetail.cpp index 6ad285e93..a1d90652b 100644 --- a/src/libs/vtools/tools/vtooldetail.cpp +++ b/src/libs/vtools/tools/vtooldetail.cpp @@ -797,7 +797,6 @@ void VToolDetail::UpdatePatternInfo() if (boundingRect().contains(pt) == false) { QRectF rect = boundingRect(); - qDebug() << "FALSE" << rect << pt << pt.x() - rect.left(); pt.setX(qMin(rect.right(), qMax(pt.x(), rect.left()))); pt.setY(qMin(rect.bottom(), qMax(pt.y(), rect.top()))); pt.setX(pt.x() - geom.GetLabelWidth()/2);