QT如何设置左Y轴和右Y轴及X轴都可以自由拖动
时间: 2024-02-24 09:58:02 浏览: 72
在Qt中,可以使用QCustomPlot库来绘制图表,实现左Y轴和右Y轴及X轴都可以自由拖动。下面提供一个简单的示例代码:
```cpp
#include "qcustomplot.h"
// 创建图表
QCustomPlot *customPlot = new QCustomPlot(this);
// 生成数据
QVector<double> x(101), y1(101), y2(101);
for (int i=0; i<101; ++i)
{
x[i] = i/5.0;
y1[i] = qExp(-x[i]*x[i])*qSin(x[i]*10);
y2[i] = qExp(-x[i]*x[i])*qCos(x[i]*10)*0.5;
}
// 添加图形
customPlot->addGraph();
customPlot->graph(0)->setData(x, y1);
customPlot->addGraph();
customPlot->graph(1)->setData(x, y2);
// 设置坐标轴标签和范围
customPlot->xAxis->setLabel("X Axis");
customPlot->yAxis->setLabel("Y Axis");
customPlot->yAxis2->setLabel("Y Axis 2");
customPlot->xAxis->setRange(-2, 2);
customPlot->yAxis->setRange(-1, 1);
customPlot->yAxis2->setRange(-0.5, 0.5);
// 设置坐标轴名称和颜色
customPlot->yAxis2->setTickLabels(true);
customPlot->yAxis2->setVisible(true);
customPlot->yAxis2->setTickPen(QPen(Qt::red));
customPlot->yAxis2->setPen(QPen(Qt::red));
customPlot->yAxis2->setSubTickPen(QPen(Qt::red));
// 允许拖动
customPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom);
// 显示图表
customPlot->replot();
```
在上面的示例代码中,通过创建两个图形来显示左Y轴和右Y轴的数据,通过设置 `setInteractions` 方法允许拖动图形。需要注意的是,具体的实现方式可能会因为Qt版本和QCustomPlot库的版本不同而有所不同,建议参考相应的文档和示例代码。
阅读全文