crossplatform.ru

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


  Ответ в проблемы с началом координат в QGraphicsScene
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Trisch Дата 28.2.2012, 4:26
  ха, проблема решена.

Все таки, тему можно закрыть)))

ха, проблема решена.

Все таки, тему можно закрыть)))
Trisch Дата 27.2.2012, 1:01
 
Цитата(MetalKrot @ 25.8.2011, 15:11) *
поздно, с этим тоже разобрался)

тему можно закрывать


рановато закрывать((( хотя эта тема давно создана, я не вижу смысла создавать новую, с подобным вопросом.

как я понял координаты мыши совпадают с координатами QGraphicsView.

Так как же совместить координаты мыши или QGraphicsView с координатами сцены, с учетом того что координаты сцены отцентрированы?
MetalKrot Дата 25.8.2011, 14:11
  поздно, с этим тоже разобрался)

тему можно закрывать
Litkevich Yuriy Дата 24.8.2011, 17:14
 
Цитата(MetalKrot @ 24.8.2011, 17:36) *
мне нужно создать глобальное перечисление.
не соответствует названию темы - создавай новую
MetalKrot Дата 24.8.2011, 14:36
  кароче с этим разобрался)
нужно было отлавливать события самой сцены, тогда всё хорошо выходит.

очередной вопрос:
мне нужно создать глобальное перечисление. как это сделать ?
MetalKrot Дата 24.8.2011, 12:43
  точка начала координат не совпадает у QGraphicsView и QGraphicsScene если я делаю так:

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


как их совместить ?

если же я делаю так:

ui->graphicsView->setScene(new QGraphicsScene(300, 400));


то всё работает нормально (цифры - это размеры GraphicsView)


ещё вопрос: могу ли отлавливать события сцены? точнее будет ли происходить событие нажатия и перемещения мыши?

ui->graphicsView->scene()->installEventFilter(this);
Litkevich Yuriy Дата 23.8.2011, 20:01
 
Цитата(MetalKrot @ 23.8.2011, 18:34) *
когда происходит MouseMove могу ли я получить координаты начальной точки, т.е. той точки, где была нажата кнопка мыши???
нет, нужно запоминать на MousePress

Про предыдущий текст не понял, в чём проблема, где вопрос?
MetalKrot Дата 23.8.2011, 15:34
  кароче у меня такая проблемка: когда я создаю сцену на 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 могу ли я получить координаты начальной точки, т.е. той точки, где была нажата кнопка мыши???
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 0:46