Files
HPPA/HPPA/ImagerPositionSimulation.cpp
2026-04-02 10:34:57 +08:00

104 lines
2.2 KiB
C++

#include "stdafx.h"
#include "ImagerPositionSimulation.h"
ImagerPositionSimulation::ImagerPositionSimulation(QWidget *parent) :
QGraphicsView(parent)
{
this->resize(1000, 500);
topLeftToLowerRight = nullptr;
topRightToLowerLeft = nullptr;
m_Scene = new QGraphicsScene(this);
this->setScene(m_Scene);
setSceneRect();
imager = new imagerSimulatioin();
m_Scene->addItem(imager);
//imager->setPos(-100, -100);
QBrush redBrush(Qt::red);
QPen outlinePen(Qt::black);
/*m_rectangle = m_Scene->addRect(0, 0, 100, 100, outlinePen, redBrush);
m_rectangle->setFlag(QGraphicsRectItem::ItemIsMovable);*/
}
ImagerPositionSimulation::~ImagerPositionSimulation()
{
}
void ImagerPositionSimulation::setSceneRect()
{
QRectF graphicsViewSize = viewport()->rect();
m_Scene->setSceneRect(-graphicsViewSize.width(), -graphicsViewSize.height(), graphicsViewSize.width(), graphicsViewSize.height());
drawX();
}
QRectF ImagerPositionSimulation::sceneRect()
{
return m_Scene->sceneRect();
}
void ImagerPositionSimulation::mousePressEvent(QMouseEvent *event)
{
QPoint viewPos = event->pos();
QGraphicsView::mousePressEvent(event);
}
void ImagerPositionSimulation::mouseReleaseEvent(QMouseEvent *event)
{
QPoint viewPos = event->pos();
////输出类型
//const type_info &x = typeid(imager);
//qDebug() << "---------------type_info: " << x.name() << x.raw_name() << x.hash_code();
//qDebug() << "---------------ImagerPositionSimulation view coordinate: " << viewPos;
//qDebug() << "---------------ImagerPositionSimulation scene coordinate: " << this->mapToScene(viewPos);
QGraphicsView::mouseReleaseEvent(event);
}
void ImagerPositionSimulation::drawX()
{
QRectF rect = m_Scene->sceneRect();
QPen outlinePen(Qt::black);
if (topLeftToLowerRight == nullptr)
{
topLeftToLowerRight = m_Scene->addLine(rect.left(), rect.top(), rect.right(), rect.bottom(), outlinePen);
}
else
{
topLeftToLowerRight->setLine(rect.left(), rect.top(), rect.right(), rect.bottom());
}
if (topRightToLowerLeft == nullptr)
{
topRightToLowerLeft = m_Scene->addLine(rect.right(), rect.top(), rect.left(), rect.bottom(), outlinePen);
}
else
{
topRightToLowerLeft->setLine(rect.right(), rect.top(), rect.left(), rect.bottom());
}
}