Russian Qt Forum

Qt => Вопросы новичков => Тема начата: chu от Сентябрь 30, 2011, 16:32



Название: graphicsView и scrollBar
Отправлено: chu от Сентябрь 30, 2011, 16:32
Нужно чтоб значения scrollBar-ов можно было изменять не только по непосредственному нажатию на него, но и по нажатию на любую точку graphicsView и перемещению курсора мыши при нажатой кнопке.
Пробовал так, но работает очень криво:
Код:
void GraphicsView::mousePressEvent(QMouseEvent * event)
{
    if(event->button() == Qt::LeftButton)
    {
        pressPoint = event->pos();
        isPressed=true;
    }
    QGraphicsView::mousePressEvent(event);
}

void GraphicsView::mouseMoveEvent(QMouseEvent *event)
{
    if(isPressed)
    {
        int oldX = pressPoint.x();
        int oldY = pressPoint.y();
        int newX = event->pos().x();
        int newY = event->pos().y();

        newX=(oldX-newX);
        newY=(oldY-newY);

        int verticalScrollValue = this->verticalScrollBar()->value();
        verticalScrollBar()->setValue(verticalScrollValue +newY);
        int horizontalScrollValue = this->verticalScrollBar()->value();
        horizontalScrollBar()->setValue(horizontalScrollValue +newX);

        qDebug()<<newX<<newY;
        qDebug()<<verticalScrollValue<<horizontalScrollValue;
    }

    QGraphicsView::mousePressEvent(event);
}

void GraphicsView::mouseReleaseEvent(QMouseEvent *event)
{
    isPressed=false;
    QGraphicsView::mouseReleaseEvent(event);
}


Название: Re: graphicsView и scrollBar
Отправлено: alexman от Сентябрь 30, 2011, 16:53
Посмотри QGraphicsView::ScrollHandDrag.


Название: Re: graphicsView и scrollBar
Отправлено: chu от Сентябрь 30, 2011, 21:36
Посмотри QGraphicsView::ScrollHandDrag.
Спасибо! я знал что это должно быть просто :)


Название: Re: graphicsView и scrollBar
Отправлено: chu от Октябрь 03, 2011, 10:40
А в scrollArea существует подобный режим?


Название: Re: graphicsView и scrollBar
Отправлено: GreatSnake от Октябрь 03, 2011, 12:08
scrollArea является базовым классом QGraphicsView


Название: Re: graphicsView и scrollBar
Отправлено: chu от Октябрь 03, 2011, 23:08
scrollArea является базовым классом QGraphicsView
Да, я в курсе, и если я правильно понял Ваше замечание, ничего подобного scrollHandDrag в scrollArea нет. Спасибо)


Название: Re: graphicsView и scrollBar
Отправлено: alexman от Октябрь 04, 2011, 08:50
scrollArea является базовым классом QGraphicsView
Да, я в курсе, и если я правильно понял Ваше замечание, ничего подобного scrollHandDrag в scrollArea нет. Спасибо)
Ну можно глянуть в исходниках QGraphicsView как там это реализовано.