2016-04-23 13 views
2

私が有効になってすべての4つの軸とし、これらの相互作用が有効でQCustomPlotを持っている:QCustomPlot:二軸上のマウス操作

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

xAxisまたはyAxisにスワイプして、私はスケールを変更することができますが、ときに私xAxis2またはyAxis2と同じことは起こりません。

どのようにセカンダリ軸で対話を設定しますか?

EDIT:

私は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); 

今、私はドラッグ/ズーム軸、およびすべてが、それはほとんど大丈夫だことができます:ドラッグは大丈夫動作しますが、私はスワイプしてズームするとき2本の指では、xAxis2yAxis2が一緒にズームします。

答えて

1

ズームする軸を選択してマウスホイールのスロットを追加することで、1つの軸だけをズームすることができます。あなたのスロットにマウスホイールの信号を接続する

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)に最後のケースを変更することができいずれの軸も選択されていない。

さらなるオプションについてはInteraction Exampleをご覧ください。

関連する問題