
2、设置光谱仪帧率、曝光时间、gain; 3、在页面中嵌入了rgb相机图传(通过opencv实现); 4、平台的相机位置模拟、x/y马达的分别控制、x/y马达的量程检测; 5、轨迹规划; 6、加入了张卓的自动调焦模块; 7、加入了自动电源控制;
131 lines
3.2 KiB
C++
131 lines
3.2 KiB
C++
#include "stdafx.h"
|
||
#include "imagerSimulatioin.h"
|
||
|
||
imagerSimulatioin::imagerSimulatioin(QGraphicsItem *parent) :QGraphicsItem(parent)
|
||
{
|
||
/*this->setFlag(QGraphicsItem::ItemIsSelectable);
|
||
this->setFlag(QGraphicsItem::ItemIsMovable);*/
|
||
|
||
setFlags(ItemIsSelectable | ItemIsMovable);
|
||
|
||
//itemChange需要:ItemSendsGeometryChanges flag is needed to capture the change in position of QGraphicsItem
|
||
this->setFlag(QGraphicsItem::ItemSendsScenePositionChanges);
|
||
m_height = 50;
|
||
m_width = 50;
|
||
|
||
|
||
}
|
||
|
||
imagerSimulatioin::~imagerSimulatioin()
|
||
{
|
||
|
||
}
|
||
|
||
QRectF imagerSimulatioin::boundingRect() const
|
||
{
|
||
qreal penWidth = 1;
|
||
return QRectF(-10 - penWidth / 2, -10 - penWidth / 2,
|
||
20 + penWidth, 20 + penWidth);
|
||
}
|
||
|
||
void imagerSimulatioin::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
|
||
{
|
||
QBrush blueBrush(Qt::green);
|
||
QColor blue(32, 159, 223);
|
||
blueBrush.setColor(blue);
|
||
|
||
QPen outlinePen(Qt::black);
|
||
|
||
painter->setPen(outlinePen);
|
||
painter->setBrush(blueBrush);
|
||
|
||
painter->drawRect(-m_width / 2, -m_height / 2, m_width, m_height);//可以改变item坐标原点,和setSceneRect(qreal x, qreal y, qreal w, qreal h)一样
|
||
|
||
|
||
//QPen outlinePen(Qt::red);
|
||
|
||
painter->drawPoint(0, 0);
|
||
painter->drawEllipse(QPoint(0, 0), 10, 10);
|
||
|
||
//painter->drawRoundedRect(-10, -10, 100, 100, 5, 5);
|
||
|
||
}
|
||
|
||
void imagerSimulatioin::setPos(qreal x, qreal y)
|
||
{
|
||
if (x>0)
|
||
{
|
||
x = -x;
|
||
}
|
||
if (y>0)
|
||
{
|
||
y = -y;
|
||
}
|
||
|
||
x = floor(x);
|
||
y = floor(y);
|
||
|
||
QGraphicsItem::setPos(x, y);//调用父类被覆盖的函数执行相应操作
|
||
|
||
scene()->update();
|
||
}
|
||
|
||
QVariant imagerSimulatioin::itemChange(GraphicsItemChange change, const QVariant &value)
|
||
{
|
||
if (change == ItemPositionChange && scene())
|
||
{
|
||
// value is the new position.
|
||
QPointF newPos = value.toPointF();
|
||
|
||
QRectF rect = scene()->sceneRect();
|
||
if (!rect.contains(newPos))
|
||
{
|
||
// Keep the item inside the scene rect.
|
||
newPos.setX(qMin(rect.right(), qMax(newPos.x(), rect.left())));
|
||
newPos.setY(qMin(rect.bottom(), qMax(newPos.y(), rect.top())));
|
||
//qDebug() << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++";
|
||
return newPos;
|
||
}
|
||
}
|
||
|
||
//qDebug() << "---------------";
|
||
|
||
return QGraphicsItem::itemChange(change, value);
|
||
}
|
||
|
||
void imagerSimulatioin::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
|
||
{
|
||
scene()->update();
|
||
|
||
QPointF originOfItem = this->scenePos();//这是item左上角在scene中的坐标
|
||
//qDebug() << originOfItem;
|
||
|
||
QGraphicsItem::mouseMoveEvent(event);
|
||
}
|
||
|
||
void imagerSimulatioin::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
|
||
{
|
||
QPointF x = pos();//这是item原点(0,0)在scene中的坐标
|
||
QPointF originOfItem = this->scenePos();//这是item原点(0,0)在scene中的坐标
|
||
|
||
QPointF viewPos = event->pos();
|
||
|
||
|
||
//qDebug() << "---------------event coordinate: " << x;
|
||
//qDebug() << "---------------event coordinate: " << viewPos;
|
||
//qDebug() << "---------------event scene coordinate: " << this->mapToScene(viewPos);
|
||
|
||
//qDebug() << "---------------imagerSimulatioin origin coordinate: " << originOfItem;
|
||
//qDebug() << "---------------imagerSimulatioin center coordinate: " << centerOfItem;
|
||
|
||
qDebug() << "---------------imagerSimulatioin origin coordinate: " << originOfItem;
|
||
|
||
emit leftMouseButtonPressed(originOfItem.x(), originOfItem.y());
|
||
|
||
|
||
//update();//不会实时绘制
|
||
scene()->update();
|
||
|
||
QGraphicsItem::mouseReleaseEvent(event);
|
||
}
|