Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



canvaswidget.cpp

 

#include "canvaswidget.h"

 

CanvasWidget::CanvasWidget(QWidget *parent) :

QWidget(parent), selected(NULL), creating(false)

{

}

CanvasWidget::~CanvasWidget()

{

for (unsigned i = 0; i < shapes.size(); ++i)

{

delete shapes[i];

}

}

void CanvasWidget::mousePressEvent (QMouseEvent * event)

{

pressedPoint[X] = event->localPos().x();

pressedPoint[Y] = event->localPos().y();

if (selected) selected->select(false);

selected = NULL;

unsigned i = shapes.size();

for (; i > 0; --i)

{

if (shapes[i - 1]->belongs(pressedPoint))

{

selected = shapes[i - 1];

pressedPoint -= selected->getCenter();

selected->select(true);

break;

}

}

update();

}

void CanvasWidget::mouseMoveEvent (QMouseEvent * event)

{

if ((event->buttons()) & Qt::LeftButton)

{

Vector2D currentPoint;

currentPoint[X] = event->localPos().x();

currentPoint[Y] = event->localPos().y();

if (creating)

{

shapes.back()->setBounds(pressedPoint, currentPoint);

}

else if (selected)

{

selected->move(currentPoint - pressedPoint);

}

else

{

creating = true;

selected = new QtRectangle(pressedPoint, pressedPoint);

shapes.push_back(selected);

selected->select(true);

}

update();

}

}

void CanvasWidget::mouseReleaseEvent (QMouseEvent *)

{

if (creating)

{

creating = false;

}

}

void CanvasWidget::paintEvent (QPaintEvent *)

{

QPainter painter(this);

for (unsigned i = 0; i < shapes.size(); ++i)

{

shapes[i]->draw(painter);

}

}

 




Переглядів: 352

<== попередня сторінка | наступна сторінка ==>
Qtshapes.cpp | Тема 1. Політичне становище українських земель у складі Російської імперії в першій половині ХІХ ст.

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.027 сек.