кароче у меня такая проблемка: когда я создаю сцену на 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);
}
точка начала координат не совпадает у QGraphicsView и QGraphicsScene если я делаю так:
ui->graphicsView->setScene(new QGraphicsScene());
ui->graphicsView->setScene(new QGraphicsScene(300, 400));
ui->graphicsView->scene()->installEventFilter(this);
кароче с этим разобрался)
нужно было отлавливать события самой сцены, тогда всё хорошо выходит.
очередной вопрос:
мне нужно создать глобальное перечисление. как это сделать ?
поздно, с этим тоже разобрался)
тему можно закрывать
ха, проблема решена.
Все таки, тему можно закрыть)))
ха, проблема решена.
Все таки, тему можно закрыть)))
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)