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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: graphicsView и scrollBar  (Прочитано 4075 раз)
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);
}
Записан
alexman
Гость
« Ответ #1 : Сентябрь 30, 2011, 16:53 »

Посмотри QGraphicsView::ScrollHandDrag.
Записан
chu
Гость
« Ответ #2 : Сентябрь 30, 2011, 21:36 »

Посмотри QGraphicsView::ScrollHandDrag.
Спасибо! я знал что это должно быть просто Улыбающийся
Записан
chu
Гость
« Ответ #3 : Октябрь 03, 2011, 10:40 »

А в scrollArea существует подобный режим?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #4 : Октябрь 03, 2011, 12:08 »

scrollArea является базовым классом QGraphicsView
Записан

Qt 5.11/4.8.7 (X11/Win)
chu
Гость
« Ответ #5 : Октябрь 03, 2011, 23:08 »

scrollArea является базовым классом QGraphicsView
Да, я в курсе, и если я правильно понял Ваше замечание, ничего подобного scrollHandDrag в scrollArea нет. Спасибо)
Записан
alexman
Гость
« Ответ #6 : Октябрь 04, 2011, 08:50 »

scrollArea является базовым классом QGraphicsView
Да, я в курсе, и если я правильно понял Ваше замечание, ничего подобного scrollHandDrag в scrollArea нет. Спасибо)
Ну можно глянуть в исходниках QGraphicsView как там это реализовано.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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