如何解决如何在不使用 QCustomPlot 的情况下在 Qt 中创建实时散点图?
我正在尝试使用 QtCharts 将随机生成的数据实时绘制成散点图。我想使用 QtCharts 来做到这一点,甚至尝试将 Qt 音频示例重新用于解决方案,但没有运气。有关如何正确执行此操作的任何建议?
解决方法
我为您更改了 Qt 散点图示例:
您只需要使用 QTimer
和 QRandomGenerator
。
chartview.h :
#ifndef CHARTVIEW_H
#define CHARTVIEW_H
#include <QtCharts/QChartView>
QT_CHARTS_USE_NAMESPACE
class ChartView: public QChartView
{
Q_OBJECT
public:
explicit ChartView(QWidget *parent = 0);
private:
QTimer *_timer;
int _x = 0;
};
#endif // CHARTVIEW_H
chartview.cpp:
#include "chartview.h"
#include <QtCharts/QScatterSeries>
#include <QtCharts/QLegendMarker>
#include <QTimer>
#include <QtMath>
#include <QtCore/QRandomGenerator>
ChartView::ChartView(QWidget *parent):
QChartView(new QChart(),parent)
{
QScatterSeries *series0 = new QScatterSeries();
series0->setName("scatter1");
series0->setMarkerShape(QScatterSeries::MarkerShapeCircle);
series0->setMarkerSize(15.0);
QScatterSeries *series2 = new QScatterSeries();
series2->setName("scatter2");
series2->setMarkerShape(QScatterSeries::MarkerShapeCircle);
series2->setMarkerSize(15.0);
_timer = new QTimer();
connect(_timer,&QTimer::timeout,this,[series0,this]()
{
series0->append(_x++,QRandomGenerator::global()->bounded(10));
});
_timer->start(1000);
*series2 << QPointF(1,5) << QPointF(4,6) << QPointF(6,3) << QPointF(9,5);
setRenderHint(QPainter::Antialiasing);
chart()->addSeries(series0);
chart()->addSeries(series2);
chart()->setTitle("Simple scatterchart example");
chart()->createDefaultAxes();
chart()->setDropShadowEnabled(false);
chart()->legend()->setMarkerShape(QLegend::MarkerShapeFromSeries);
}
输出是:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。