虚拟示波器,要使用Qchart进行处理
This commit is contained in:
@@ -0,0 +1,117 @@
|
||||
#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();
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user