首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用QPainter绘制心电波形图

用QPainter绘制心电波形图
EN

Stack Overflow用户
提问于 2015-11-14 12:40:07
回答 1查看 1.1K关注 0票数 0

我能读取心电信号,并能用QPainter绘制波形。但是产生的波是通过移除第一个坐标并附加新的坐标作为最后一点而形成的。这就给了波浪一个滚动的效果。

我想知道是否有任何方法可以像病人监测系统那样来绘制波形(运行波形长度的黑色条形图,并像一样更新波形)。

代码示例或代码片段将非常helpful.Thanks。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-14 14:40:11

下面是一个简单的例子,在几行代码中,虽然不够完美,但足以让人理解这个想法:

代码语言:javascript
复制
class ECG : public QWidget {
    Q_OBJECT
public:
    ECG(QWidget * p) : QWidget(p), t(0), x(0), lastPoint(0,0) {
        setAttribute(Qt::WA_NoSystemBackground); // don't erase previous painting
    }

    void paintEvent(QPaintEvent *) {
        QPainter painter(this);
        painter.setPen(QPen(Qt::green, 2));
        painter.fillRect(x, 0, 60, height(), Qt::black);
        if (line.length() < 100) painter.drawLine(line); // don't draw a line accross the screen
    }

public slots:
    void drawReading(qreal reading) {
        x = t++ % width();
        QPointF newPoint(x, (reading * height() * 0.4) + (height() * 0.5));
        line = QLineF(lastPoint, newPoint);
        lastPoint = newPoint;
        update();
    }

private:
    quint32 t, x;
    QPointF lastPoint;
    QLineF line;
};

这个小部件将绘制出与您想要的类似的东西,并且它被设置为接受-1.0到1.0之间的读数。

您可以用生成器来测试它:

代码语言:javascript
复制
class Gen : public QObject {
    Q_OBJECT
public:
    Gen(int f) : time(0) {
        t.setInterval(30);
        freq = (2 * 3.14159) / f;
        connect(&t, QTimer::timeout, [&](){
            qreal r = sin(time);
            time = fmod(time + freq, 2 * 3.14159);
            emit newReading(r);
        });
    }
public slots:
    void toggle() { t.isActive() ? t.stop() : t.start(); }
signals:
    void newReading(qreal);
private:
    QTimer t;
    qreal time, freq;
};
代码语言:javascript
复制
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    ECG e(0);
    e.show();
    Gen g(60);
    QObject::connect(&g, SIGNAL(newReading(qreal)), &e, SLOT(drawReading(qreal)));
    g.toggle();
    return a.exec();
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33708497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档