【发布时间】:2018-12-21 09:03:27
【问题描述】:
我正在编写一个派生自QwtPlotZoomer 的类MyPlotZoomer。 MyPlotZoomer 与 QwtPlotZoomer 的不同之处在于,为了激活和绘制缩放矩形,用户必须按住 ctrl 键,单击并拖动,然后释放鼠标按钮。
为了实现这一点,我通过以下方式覆盖了QWtPlotZoomer、widgetMouseReleaseEvent、widgetMousePressEvent和widgetMouseMoveEvent中的三个方法:
#include <QWidget>
#include "qwt_plot.h"
#include "qwt_plot_zoomer.h"
#include <QMouseEvent>
class MyPlotZoomer : public QwtPlotZoomer
{
public:
// constructor
explicit MyPlotZoomer( QWidget *canvas );
// destructor
// function prototypes
// data
protected:
// function prototypes
virtual void widgetMouseReleaseEvent( QMouseEvent *mouse_event ) override{
if( mouse_event->modifiers() & Qt::ControlModifier ){
QwtPlotZoomer::widgetMouseReleaseEvent( mouse_event );
}
};
virtual void widgetMousePressEvent( QMouseEvent *mouse_event ) override{
if( mouse_event->modifiers() & Qt::ControlModifier ){
QwtPlotZoomer::widgetMousePressEvent( mouse_event );
}
};
virtual void widgetMouseMoveEvent( QMouseEvent *mouse_event ) override{
if( mouse_event->modifiers() & Qt::ControlModifier ){
QwtZoomer::widgetMouseMoveEvent( mouse_event );
}
};
};
但是,按 ctrl 键然后绘图什么也不做。缩放矩形不显示。我在这里做错了什么?
【问题讨论】:
-
在我看来你忘记了 Q_OBJECT,顺便说一句
-
@AlexanderChernin,如果不涉及信号/插槽,则不需要存在
Q_OBJECT。 -
@vahancho 我知道我只是在上面指出它