В главное окно программы вводятся координаты первой точки квадрата, далее происходит обработка. Как передать обработанные координаты объекту QPaintWidget?
код mainwindow.cpp:
#include <QtCore>
#include <QtGui>
#include "mainwindow.h"
#include "qpaintwidget.h"
void MainWindow::go()
{
int ox, oy, ox1, oy1;
QString sox, soy;
sox = spinBox -> text();
soy = spinBox_2 -> text();
ox = sox.toInt();
oy = soy.toInt();
//вычисляем координаты остальных вершин квадрата
ox1 = ox + 20;
oy1 = oy + 20;
QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
this->setWindowModality(Qt::NonModal);
QPaintWidget *wgt = new QPaintWidget();
wgt->setFixedSize(550, 550);
wgt->setWindowTitle(tr("Графическое отображение выполнения программы"));
wgt->show();
}
код qpaintwidget.cpp, сюда необходимо передать значения ox, oy, ox1, oy1 из MainWindow
#include "qpaintwidget.h"
#include <QPainter>
QPaintWidget::QPaintWidget(QWidget *parent) : QWidget(parent)
{
}
void QPaintWidget::paintEvent(QPaintEvent *)
{
QPainter p(this); // Создаём новый объект рисовальщика
p.setWindow(QRect(-250,-250,500,500));
p.setPen(QPen(Qt::red,1,Qt::SolidLine)); // Настройки рисования
QPolygonF polygon1;
QPolygonF polygon2;
//Рисуем координатную сетку
polygon1 << QPointF(0,250) << QPointF(0,-250);
polygon2 << QPointF(-250,0) << QPointF(250,0);
p.drawPolygon(polygon1);
p.drawPolygon(polygon2);
for (int i = -250; i <= 250; i = i + 10)
{
QPolygonF polygon3;
QPolygonF polygon4;
polygon3 << QPointF(i, 0) << QPointF(i, 5);
polygon4 << QPointF(0, i) << QPointF(5, i);
p.drawPolygon(polygon3);
p.drawPolygon(polygon4);
}
//рисуем первоначальный квадрат
QPolygonF polygon;
polygon << QPointF(ox, oy) << QPointF(ox1, oy) << QPointF(ox1, oy1) << QPointF(ox, oy1);
p.setPen(QPen(Qt::black, 1, Qt::SolidLine));
p.drawPolygon(polygon);
}