Russian Qt Forum
Май 19, 2024, 09:16 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: setCanvas блокирует события движения мыши в QtCanvasView  (Прочитано 2703 раз)
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
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.039 секунд. Запросов: 17.