qtc++根据数据画柏拉图不使用QCustomPlot 库\Qt Charts模块
时间: 2024-03-10 10:47:36 浏览: 239
qt-beginning_ninef79_QTC++入门_QT_应用框架qt_
如果不使用QCustomPlot库或Qt Charts模块,我们可以使用Qt自带的绘图类QPainter来实现绘制柏拉图。
以下是一个简单的绘制柏拉图的示例代码:
```cpp
void Widget::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
QPainter painter(this);
// 设置画笔
painter.setPen(QPen(Qt::black, 2));
// 绘制坐标轴
painter.drawLine(QPointF(50, 250), QPointF(450, 250));
painter.drawLine(QPointF(50, 250), QPointF(50, 50));
// 绘制坐标轴上的标记和文字
painter.drawText(QPointF(43, 265), "0");
painter.drawText(QPointF(33, 255), "-");
painter.drawText(QPointF(43, 55), "0");
painter.drawText(QPointF(33, 245), "-");
painter.drawText(QPointF(450, 265), "x");
painter.drawText(QPointF(30, 50), "y");
// 绘制柏拉图数据点
QList<QPointF> points;
points << QPointF(100, 200) << QPointF(200, 150) << QPointF(300, 100) << QPointF(400, 50);
painter.setPen(QPen(Qt::red, 5));
painter.setBrush(QBrush(Qt::red));
for (int i = 0; i < points.size(); i++) {
painter.drawEllipse(points.at(i), 5, 5);
}
// 绘制柏拉图线段
painter.setPen(QPen(Qt::blue, 2));
for (int i = 0; i < points.size() - 1; i++) {
painter.drawLine(points.at(i), points.at(i + 1));
}
}
```
在这个示例中,我们首先在paintEvent()函数中创建了一个QPainter对象,然后设置画笔和画刷,绘制坐标轴和标记文字。接着,我们定义了一个QList<QPointF>对象,用于存储柏拉图的数据点,然后通过for循环绘制每个数据点。最后,我们再次使用for循环,绘制柏拉图的线段。
当我们调用QWidget::update()函数时,paintEvent()函数就会被自动调用,从而完成柏拉图的绘制。
需要注意的是,这个示例只是一个简单的柏拉图绘制示例,实际应用中还需要根据具体需求进行修改和优化。
阅读全文