crossplatform.ru

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

> проблемы с началом координат в QGraphicsScene, хочу начало координат в левом верхнем углу
MetalKrot
  опции профиля:
сообщение 23.8.2011, 15:34
Сообщение #1


Новичок


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

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




Репутация:   0  


кароче у меня такая проблемка: когда я создаю сцену на QGraphicsView центр координат находится в центре QGraphicsView. я отлавливаю координаты мыши, здесь центр координат расположен как нужно. тоесть получается если я начинаю рисовать мышкой с левого верхнего угла, то линия рисуется с центра виджета...

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    connect(ui->menuSelection_object, SIGNAL(triggered(QAction*)),
            this, SLOT(IsCheckedAction(QAction*)));

    ui->graphicsView->viewport()->installEventFilter(this);

    ui->graphicsView->setScene(new QGraphicsScene());
}

bool MainWindow::eventFilter(QObject *target, QEvent *event)
{
    QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);

    if (event->type() == QEvent::MouseButtonPress)
    {
        _startPos = mouseEvent->posF();

        if (mouseEvent->buttons() == Qt::LeftButton)
        {
            Creator objectsCreator = Creator();
            _drawObject = objectsCreator.CreateShape(_objectIdentifier);

            _drawObject->setStartPoint(QPoint(mouseEvent->x(), mouseEvent->y()));

            ui->graphicsView->scene()->addItem(_drawObject);
            ui->graphicsView->scene()->update();

        }
        else
        {
            _startPos.setX(-1);
            _startPos.setY(-1);
        }
    }

    if (event->type() == QEvent::MouseMove)
    {
        if ((_startPos.x() != -1) & (_startPos.y() != -1))
        {
            _drawObject->setFinishPoint(QPoint(mouseEvent->x(), mouseEvent->y()));

            ui->graphicsView->scene()->update();
        }
    }

    return QMainWindow::eventFilter(target, event);
}


_drawObject - это объект класса, наследуемого от QGraphicsItem.


и ещё один вопрос, когда происходит MouseMove могу ли я получить координаты начальной точки, т.е. той точки, где была нажата кнопка мыши???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 24.4.2024, 11:49