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