Я сделал класс
class XGisCanvasView : public QtCanvasView
{
private:
Q_OBJECT
public:
XGisCanvasView (QWidget *parent=NULL);
virtual ~XGisCanvasView (void);
QPoint getPos (void) const { return scr; }
<skipped>
protected:
virtual void contentsMouseMoveEvent (QMouseEvent *e);
virtual void contentsMousePressEvent (QMouseEvent *e);
virtual void contentsMouseReleaseEvent (QMouseEvent *e);
virtual void contentsMouseDoubleClickEvent (QMouseEvent *e);
virtual void contentsContextMenuEvent (QContextMenuEvent *e);
virtual void resizeEvent (QResizeEvent *e);
private:
QPoint scr;
QtCanvas* pCanvas;
};
XGisCanvasView :: XGisCanvasView(QWidget *parent/*=NULL*/) : QtCanvasView (parent), scr (QPoint(0, 0))
{
setMouseTracking ( true );
viewport()->setMouseTracking ( true );
int x = width();
int y = height();
if ( parent )
{
x = parent->width();
y = parent->height();
}
qDebug ("width = %d height = %d", x, y);
pCanvas = new QtCanvas ( );//this );
qDebug ("QtCanvas init");
pCanvas->resize (x, y);
//QtCanvasView (&wcanv, parent);
setCanvas( pCanvas );
qDebug ("QtCanvas set");
this->canvas()->update();
bool isTrace = hasMouseTracking();
bool isVTrace = viewport()->hasMouseTracking();
if ( isTrace )
qDebug ("Mouse tracking is on");
else
qDebug ("Mouse tracking is off");
if ( isVTrace )
qDebug ("Viewport Mouse tracking is on");
else
qDebug ("Viewport Mouse tracking is off");
}
Когда я делаю setCanvas ( pCanvas ), то при движении мыши события contentsMouseMoveEvent не происходит, хотя переменные isTrace и isVTrace дают значение true, и приходится двигать нажатой мышью, в то время как, если закомментировать setCanvas, то все отслеживается нормально, соответственно вопрос: где собака порылась и как с этим бороться ? Библиотека qt-4.1.2