Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何限制图表的放大?_C++_Qt_Plot - Fatal编程技术网

C++ 如何限制图表的放大?

C++ 如何限制图表的放大?,c++,qt,plot,C++,Qt,Plot,我已经从中实现了缩放示例 现在我需要限制缩放。我有两个Y轴,值为-100到+100(甚至更大),另一个y2轴固定在-pi..pi(没有超出该范围的值) 变焦不应大于数据范围的边界,或至少可设置限制 那么我如何实现这一点呢?到目前为止,我没有找到更多的QT图表示例 此外,我想重置缩放到原来的,让退格说。如何重置缩放?回答晚,但因为没有其他 在MyChartView:public QtCharts::QChartViewclass I中,使用此方法重写mouseReleaseEvent。当右键单击时

我已经从中实现了缩放示例

现在我需要限制缩放。我有两个Y轴,值为-100到+100(甚至更大),另一个y2轴固定在-pi..pi(没有超出该范围的值)

变焦不应大于数据范围的边界,或至少可设置限制

那么我如何实现这一点呢?到目前为止,我没有找到更多的QT图表示例


此外,我想重置缩放到原来的,让退格说。如何重置缩放?

回答晚,但因为没有其他

MyChartView:public QtCharts::QChartView
class I中,使用此方法重写
mouseReleaseEvent
。当右键单击时,轴将立即“缩小”为默认值(这是我想要的)

在分步支持缩小的情况下,我假设连接到QValueAxis::maxChanged/QValueAxis::minChanged并检查其中的范围

void MyChartView::mouseReleaseEvent(QMouseEvent *event) {
   if (event->button() == Qt::MouseButton::LeftButton) {
       // continue with zoom in
        QtCharts::QChartView::mouseReleaseEvent(event);
   }
   else if (event->button() == Qt::MouseButton::RightButton) {
      // reset axis to default
      axisY_->setMin(0);
      axisY_->setMax(10);
      axisX_->setMin(0);
      axisX_->setMax(10);
   }
}

总的猜测,但可能:好的,但我如何检查范围?如果仅将图表作为对象,如何访问轴?我如何捕捉缩放发生的情况?有一个
rangeChanged(qreal min,qreal max)
信号我可以捕捉到,但我可以在哪里连接它?不幸的是,我对QT知之甚少。这些链接是我30年代在谷歌上发现的。在你调用void QChart::zoomIn之后,你能不能检查轴并根据需要调整它们?或者甚至不用缩放,只需手动调整范围即可。