@@ -13,6 +13,7 @@ LabelCollector::LabelCollector(QQuickItem *parent) : QQuickPaintedItem(parent)
13
13
, m_highlightPen(QPen(Qt::red, 5 , Qt::SolidLine, Qt::SquareCap, Qt::MiterJoin))
14
14
, m_pointPen(QPen(QColor(220 ,118 ,51 ), 7, Qt::SolidLine, Qt::SquareCap, Qt::MiterJoin))
15
15
, m_polyPen(QPen(Qt::yellow , 3 , Qt::SolidLine, Qt::SquareCap, Qt::MiterJoin))
16
+ , m_extensivePen(QPen(QColor(" #556b2f" ), 1, Qt::DashLine, Qt::SquareCap, Qt::MiterJoin)) // darkolivegreen
16
17
, m_cvModule(std::make_unique<CvModule>())
17
18
{
18
19
setAcceptedMouseButtons (Qt::AllButtons);
@@ -42,13 +43,42 @@ void LabelCollector::paint(QPainter *painter)
42
43
}
43
44
if (m_selectLabelIdx.empty ()) {
44
45
if (m_mouseMoved) {
46
+ // Draw a horizontal and vertical dash line to show cursor point
47
+ painter->setPen (m_extensivePen);
48
+ painter->drawLine (m_lastPoint.x (), 0 , m_lastPoint.x (), m_scaledImg.height ());
49
+ painter->drawLine (0 , m_lastPoint.y (), m_scaledImg.width (), m_lastPoint.y ());
45
50
painter->setPen (m_normalPen);
46
51
painter->setRenderHint (QPainter::Antialiasing);
47
52
painter->drawRect (QRectF (m_firstPoint,m_lastPoint));
48
53
}
49
54
}
50
55
if (m_dataVec.empty ())
51
56
return ;
57
+ // Draw a horizontal and vertical dash line to show cursor point while adjust rectangle
58
+ if (!m_polySelectResult.isSelect && m_rectCornerSelectResult.isSelect ) {
59
+ painter->setPen (m_extensivePen);
60
+ painter->drawLine (m_lastPoint.x (), 0 , m_lastPoint.x (), m_scaledImg.height ());
61
+ painter->drawLine (0 , m_lastPoint.y (), m_scaledImg.width (), m_lastPoint.y ());
62
+ } else if (!m_polySelectResult.isSelect && !m_rectCornerSelectResult.isSelect && m_rectEdgeSelectResult.isSelect ) {
63
+ painter->setPen (m_extensivePen);
64
+ switch (m_rectEdgeSelectResult.line ) {
65
+ case 0 :
66
+ painter->drawLine (m_lastPoint.x (), 0 , m_lastPoint.x (), m_scaledImg.height ());
67
+ break ;
68
+ case 1 :
69
+ painter->drawLine (0 , m_lastPoint.y (), m_scaledImg.width (), m_lastPoint.y ());
70
+ break ;
71
+ case 2 :
72
+ painter->drawLine (m_lastPoint.x (), 0 , m_lastPoint.x (), m_scaledImg.height ());
73
+ break ;
74
+ case 3 :
75
+ painter->drawLine (0 , m_lastPoint.y (), m_scaledImg.width (), m_lastPoint.y ());
76
+ break ;
77
+ default :
78
+ break ;
79
+ }
80
+ }
81
+
52
82
QVector<LabelData*>::iterator iter;
53
83
for (iter=m_dataVec.begin ();iter!=m_dataVec.end ();iter++) {
54
84
// Draw bounding box
@@ -183,14 +213,13 @@ void LabelCollector::mouseReleaseEvent(QMouseEvent *event)
183
213
m_mousePressed = false ;
184
214
m_mouseMoved = false ;
185
215
GeometryModule::preventInvalidRect (m_dataVec, m_rectCornerSelectResult, m_rectEdgeSelectResult);
186
- if (m_polySelectResult.isSelect ) {
187
- PolygonSelectResult defaultResult;
188
- m_polySelectResult = defaultResult;
216
+ if (m_polySelectResult.isSelect || m_rectEdgeSelectResult.isSelect || m_rectCornerSelectResult.isSelect ) {
217
+ m_polySelectResult.isSelect = false ;
218
+ m_rectEdgeSelectResult.isSelect = false ;
219
+ m_rectCornerSelectResult.isSelect = false ;
189
220
update ();
190
221
return ;
191
222
}
192
- if (m_polySelectResult.isSelect || m_rectEdgeSelectResult.isSelect || m_rectCornerSelectResult.isSelect )
193
- return ;
194
223
if (!m_selectLabelIdx.empty ())
195
224
return ;
196
225
if (m_firstPoint != m_lastPoint){
0 commit comments