crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> движение сцены мышью
Barabas
  опции профиля:
сообщение 2.5.2012, 6:25
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 1
Регистрация: 2.5.2012
Пользователь №: 3356

Спасибо сказали: 0 раз(а)




Репутация:   0  


Движение сцены мышью происходит неравномерно, а какими-то рывками (мышь двигаешь равномерно, а сцена просто берет и укатывается вбок, пока не достигнет границы) и не всегда происходит при движении мышью (то есть мышь двигаешь, а сцена стоит).

void GraphicsView::mousePressEvent(QMouseEvent *event) {
    this->fixedPoint = event->pos();
}

void GraphicsView::mouseMoveEvent(QMouseEvent *event) {
    if(!this->fixedPoint.isNull()) {
        QPointF offset = this->fixedPoint - pos;             // вычисляем разность, на которую мышь подвинулась, между начальной точкой и конечной
        
        this->setCenter(this->getCenter() - offset);       // находим новую точку-центр, в которую надо передвинуть сцену, и передаем
    }
}

void GraphicsView::mouseReleaseEvent(QMouseEvent *event) {
    this->fixedPoint = QPoint();
}

void GraphicsView::setCenter(const QPointF &centerPoint) {
    this->center = centerPoint;      // center в координатах сцены
    this->centerOn(centerPoint);    // centerPoint в координатах scene
}

QPointF GraphicsView::getCenter() {
    return this->center;
}


Может быть я что-то делаю просто неправильно? Вроде координаты перепроверял, находит и вычисляет корректно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 2.12.2024, 12:31