118 lines
2.2 KiB
C++
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();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|