Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: YuriyRusinov от Апрель 19, 2006, 17:40



Название: setCanvas блокирует события движения мыши в QtCanvasView
Отправлено: YuriyRusinov от Апрель 19, 2006, 17:40
Я сделал класс

Код:

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