diff --git a/logPlus/TransparentDraggableSwallCore.cpp b/logPlus/TransparentDraggableSwallCore.cpp index 7b9312f..eb38e5c 100644 --- a/logPlus/TransparentDraggableSwallCore.cpp +++ b/logPlus/TransparentDraggableSwallCore.cpp @@ -546,6 +546,7 @@ void TransparentDraggableSwallCore::onMousePress(QMouseEvent *event) //double y = mPlot->yAxis->pixelToCoord(event->pos().y()); double y = mPlot->xAxis->pixelToCoord(event->pos().y());//x轴展示深度 + double x = mPlot->yAxis->pixelToCoord(event->pos().x()); QCPRange currentRange = getRange(); @@ -558,7 +559,19 @@ void TransparentDraggableSwallCore::onMousePress(QMouseEvent *event) //else if(x >= currentRange.lower && x <= currentRange.upper) { else */ if(y >= currentRange.lower && y <= currentRange.upper) { - mDragMode = DragRect; + double lY1Tmp = mPlot->yAxis->range().lower; + double y1Tmp = mPlot->yAxis->coordToPixel(lY1Tmp); + + double leftTmp = mPlot->yAxis->pixelToCoord(y1Tmp+m_fLeftSpace);//mRect->topLeft->coords().y(); + double rightTmp = mRect->bottomRight->coords().y(); + if(x>=leftTmp && x<=rightTmp) + { + mDragMode = DragRect; + } + else { + mDragMode = DragNone; + return; + } } else { mDragMode = DragNone; @@ -638,25 +651,25 @@ void TransparentDraggableSwallCore::onMouseMove(QMouseEvent *event) newRange.lower = center - width/2; newRange.upper = center + width/2; - // 检查是否超出轴范围 - if(newRange.lower < getMyLower()) { - newRange.lower = getMyLower(); - newRange.upper = newRange.lower + width; - } - else if(newRange.upper > getMyUpper()) { - newRange.upper = getMyUpper(); - newRange.lower = newRange.upper - width; - } + // 检查是否超出轴范围(允许横向多个取心) +// if(newRange.lower < getMyLower()) { +// newRange.lower = getMyLower(); +// newRange.upper = newRange.lower + width; +// } +// else if(newRange.upper > getMyUpper()) { +// newRange.upper = getMyUpper(); +// newRange.lower = newRange.upper - width; +// } -// QCPRange axisRange = mPlot->xAxis->range(); -// if(newRange.lower < axisRange.lower) { -// newRange.lower = axisRange.lower; -// newRange.upper = newRange.lower + width; -// } -// else if(newRange.upper > axisRange.upper) { -// newRange.upper = axisRange.upper; -// newRange.lower = newRange.upper - width; -// } + QCPRange axisRange = mPlot->xAxis->range(); + if(newRange.lower < axisRange.lower) { + newRange.lower = axisRange.lower; + newRange.upper = newRange.lower + width; + } + else if(newRange.upper > axisRange.upper) { + newRange.upper = axisRange.upper; + newRange.lower = newRange.upper - width; + } break; } default: diff --git a/logPlus/mainwindowcurve.cpp b/logPlus/mainwindowcurve.cpp index 114fa14..e44cdbc 100644 --- a/logPlus/mainwindowcurve.cpp +++ b/logPlus/mainwindowcurve.cpp @@ -116,6 +116,8 @@ MainWindowCurve::MainWindowCurve(QWidget *parent) : //我们让一列也可以滑动 ui->tableWidget_2->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel); ui->tableWidget_2->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); + //防止编辑区域比较宽时,点击属性名称列或者赋值列导致页面左右动 + ui->tableWidget_2->setAutoScroll(false); connect(ui->tableWidget_2, SIGNAL(itemClicked(QTableWidgetItem*)), this, SLOT(onItemClicked(QTableWidgetItem*)));