#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(); }