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 могу ли я получить координаты начальной точки, т.е. той точки, где была нажата кнопка мыши???