qwtplot放大限制

本文介绍了一种对QwtPlotZoomer在特定条件下限制放大的方法。通过继承QwtPlotZoomer并重写accept函数,实现了当X坐标轴范围小于0.3或Y坐标轴范围小于15时禁止进一步放大的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      我对qwtpot放大进行了条件限制,当X坐标轴横坐标最大值-最小值<0.3时不允许再放大,即无论qwtplotzoomer如何框选都不会再放大。

accept函数是qwtplotzoomer中的虚函数,我重新写了一个子类继承自qwtplotzoomer,然后重写了这个虚函数。这个虚函数的作用就是判断qwtplotzoomer框中的矩形框是否符合要求,如果符合要求就将矩形框中的部分进行放大,不符合就不放大。在这个虚函数中可以加入自己的代码,比如不满足某些条件就return false,这时就不会进行放大。

class Zoomer :public QwtPlotZoomer
{
	Q_OBJECT
public:
	QString m_vCurveType;
	Zoomer(QString curveType,QWidget *canvas, bool doReplot = true) :QwtPlotZoomer(canvas, doReplot)
	{
		m_vCurveType = curveType;
	}
protected:
	virtual bool accept(QPolygon & 	pa)	const
	{
		const QwtPlot *plot = QwtPlotPicker::plot();
		if ((m_vCurveType == "0" || m_vCurveType=="1")&&(plot->axisScaleDiv(QwtPlot::xBottom).interval().maxValue() - plot->axisScaleDiv(QwtPlot::xBottom).interval().minValue() < 0.3))
			return FALSE;
		else if (m_vCurveType == "2" && (plot->axisScaleDiv(QwtPlot::yLeft).interval().maxValue() - plot->axisScaleDiv(QwtPlot::yLeft).interval().minValue() < 15))
			return FALSE;
		return QwtPlotZoomer::accept(pa);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值