Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as C++ by asd ( 15 years ago )
#ifndef FIGURE_H
#define FIGURE_H

#include <QGraphicsSceneMouseEvent>
#include <QGraphicsScene>

class Figure
{
public:
virtual void draw(QGraphicsSceneMouseEvent *mouseEvent,QGraphicsScene *scene) = 0;
};

class Ellipse : public Figure
{
    void draw(QGraphicsSceneMouseEvent *mouseEvent,QGraphicsScene *scene)
    {
        scene->addEllipse(mouseEvent->pos().x(),mouseEvent->pos().y(),10,10);
    }
};

class Line : public Figure
{
    void draw(QGraphicsSceneMouseEvent *mouseEvent,QGraphicsScene *scene)
    {
        scene->addLine(mouseEvent->pos().x(),mouseEvent->pos().y(),10,10);
    }
};

#endif // FIGURE_H

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QBoxLayout>
#include <iostream>

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

    scene = new QGraphicsScene();
    scene->setBackgroundBrush(Qt::green);
    scene->installEventFilter(this);

    QHBoxLayout *layout = new QHBoxLayout;
    view = new QGraphicsView(scene);
    layout->addWidget(view);

    QWidget *widget = new QWidget;
    widget->setLayout(layout);

    setCentralWidget(widget);
    setWindowTitle(tr("MyScreen"));
    setUnifiedTitleAndToolBarOnMac(true);
    coord.setX(0);
    coord.setY(0);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_actionExit_activated()
{
    exit(1);
}

void MainWindow::on_actionOval_activated()
{
    delete _currentFigure;
    _currentFigure = new Ellipse;
}

void MainWindow::on_actionLine_activated()
{
    delete _currentFigure;
    _currentFigure = new Line;
}
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
    if (obj == scene)
    {
        if (event->type() == QEvent::GraphicsSceneMousePress)
         {
               QGraphicsSceneMouseEvent *mouseEvent = static_cast<QGraphicsSceneMouseEvent*>(event);
               coord = mouseEvent->scenePos();
               _currentFigure->draw(mouseEvent,scene);
               return true;
         }
    }
}

 

Revise this Paste

Parent: 28688
Your Name: Code Language: