Q图:辅助轴上的鼠标交互

  • 本文关键字:鼠标 交互 qt5 qcustomplot
  • 更新时间 :
  • 英文 :


我有一个QCustomPplot,其中启用了所有4个轴并激活了以下交互:

my_w.plot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectAxes | QCP::iSelectLegend | QCP::iSelectPlottables);

现在,通过在xAxisyAxis上滑动,我可以更改比例,但是当我在xAxis2yAxis2上执行相同的操作时,什么也没发生。

如何在辅助轴上设置交互?

编辑:

我发现了setRangeDragAxessetRangeZoomAxes

my_w.plot->axisRect()->setRangeDragAxes(my_w.plot->xAxis2,my_w.plot->yAxis2);
my_w.plot->axisRect()->setRangeZoomAxes(my_w.plot->xAxis2,my_w.plot->yAxis2);

现在我可以拖动/和缩放轴,一切都几乎没问题:拖动工作正常,但是当我用两根手指滑动进行缩放时,xAxis2yAxis2一起缩放。

通过选择要缩放的轴并添加鼠标滚轮插槽,只能使一个轴缩放。

将鼠标滚轮信号连接到插槽:

connect(my_w.plot, SIGNAL(mouseWheel(QWheelEvent*)), this, SLOT(mouseWheel()));

实现鼠标滚轮插槽:

void YourDialog::mouseWheel()
{
  // if an axis is selected, only allow the direction of that axis to be zoomed
  // if no axis is selected, both directions may be zoomed
  if (my_w.plot->xAxis->selectedParts().testFlag(QCPAxis::spAxis)){
    my_w.plot->axisRect()->setRangeZoomAxes(my_w.plot->xAxis,my_w.plot->yAxis);
    my_w.plot->axisRect()->setRangeZoom(my_w.plot->xAxis->orientation());
  }
  else if (my_w.plot->yAxis->selectedParts().testFlag(QCPAxis::spAxis)){
    my_w.plot->axisRect()->setRangeZoomAxes(my_w.plot->xAxis,my_w.plot->yAxis);
    my_w.plot->axisRect()->setRangeZoom(my_w.plot->yAxis->orientation());
  }
  else if (my_w.plot->xAxis2->selectedParts().testFlag(QCPAxis::spAxis)){
    my_w.plot->axisRect()->setRangeZoomAxes(my_w.plot->xAxis2,my_w.plot->yAxis2);
    my_w.plot->axisRect()->setRangeZoom(my_w.plot->xAxis2->orientation());
  }
  else if (my_w.plot->yAxis2->selectedParts().testFlag(QCPAxis::spAxis)){
    my_w.plot->axisRect()->setRangeZoomAxes(my_w.plot->xAxis2,my_w.plot->yAxis2);
    my_w.plot->axisRect()->setRangeZoom(my_w.plot->yAxis2->orientation());
  }
  else
    my_w.plot->axisRect()->setRangeZoom(Qt::Horizontal|Qt::Vertical);
}

如果您不想在未选择任何轴时进行任何缩放,则可以将最后一个案例更改为setRangeZoom(0)

查看交互示例以获取更多选项。

相关内容

  • 没有找到相关文章

最新更新