Files
gcs-nf/App/ComponentUI/Scope/VirtualScope.cpp
T

118 lines
2.2 KiB
C++

#include "VirtualScope.h"
VirtualScope::VirtualScope(QWidget *parent) : QWidget(parent)
{
}
VirtualScope::~VirtualScope()
{
}
void VirtualScope::mouseReleaseEvent(QMouseEvent *e)
{
qDebug() << "VirtualScope release" << e;
}
void VirtualScope::mousePressEvent(QMouseEvent *e)
{
qDebug() << "VirtualScope press" << e;
}
void VirtualScope::mouseDoubleClickEvent(QMouseEvent *e)
{
qDebug() << "VirtualScope double clicked" << e;
}
void VirtualScope::wheelEvent(QWheelEvent *e)
{
qDebug() << e;
}
void VirtualScope::paintEvent(QPaintEvent *)
{
//qreal scale = 4000.0;
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing); /* 使用反锯齿(如果可用) */
painter.setRenderHint(QPainter::TextAntialiasing);
painter.setRenderHint(QPainter::SmoothPixmapTransform);
painter.translate(width() / 2, height() / 2); /* 坐标变换为窗体中心 */
//int side = qMin(width(), height()); /* 这一句决定了这个模块只能是方形 */
//painter.scale(side / scale, side / scale); /* 比例缩放 */
painter.setPen(Qt::NoPen);
drawBackground(&painter);
}
void VirtualScope::drawBackground(QPainter *painter)
{
QPen pen;
QFont font;
float w = width();
float h = height();
//画大黑背景
painter->save();
painter->setBrush(Qt::black);
painter->drawRect(-w/2,-h/2,w,h);
painter->restore();
//画坐标系
painter->save();
//painter->translate(-200,0);
//水平,垂直虚线
pen.setColor(QColor("#FFFFFF"));
pen.setWidthF(1);
painter->setPen(pen);
font.setPointSize(15);
font.setFamily("Arial");//非衬线
painter->setFont(font);
//水平分成8个格,竖直分成10个格
float g_h = (h - 50)/8;
float g_w = (w - 50)/10;
for(int i = -4;i <= 4;i++)
{
painter->drawLine(-(w - 50)/2,g_h * i,(w - 50)/2,g_h * i);
}
//水平分成10条线
for(int i = -5;i <= 5;i++)
{
painter->drawLine(g_w * i,-(h - 50)/2,g_w * i,(h - 50)/2);
painter->drawText(QRect(g_w * i - 100,(h - 50)/2,200,20), Qt::AlignCenter,QString::number(i));
}
painter->restore();
}