qt c++ 使用2个坐标点绘制一条曲线,写一个例子
时间: 2024-09-28 09:12:32 浏览: 39
c++与Qt实现QChart使用样例,包含双纵坐标轴参数、样式设置,绘图曲线背景自定义,曲线实时刷新
4星 · 用户满意度95%
在Qt C++中,你可以使用QPainter类及其相关的函数来绘制一条曲线。通常,我们会使用贝塞尔曲线(QPainter::drawCurve()函数)或者其他绘图函数来表示连续的点。这里是一个简单的示例,假设我们有两个二维坐标点A和B,并想在这两点之间绘制一条直线:
```cpp
#include <QApplication>
#include <QWidget>
#include <QPainter>
// 定义两个坐标的结构体
struct Point {
qreal x;
qreal y;
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
// 创建窗口
QWidget window;
window.resize(400, 400);
window.setWindowTitle("Drawing a Line");
// 绘画函数
void drawLine(QWidget* widget, const Point& pointA, const Point& pointB) {
QPainter painter(widget);
painter.setPen(Qt::blue); // 设置画笔颜色
// 直线绘制,从pointA到pointB
painter.drawLine(pointA.x, pointA.y, pointB.x, pointB.y);
}
// 在窗口上绘制两条线
drawLine(&window, {50, 100}, {350, 300});
drawLine(&window, {150, 200}, {250, 150});
// 显示窗口
window.show();
return app.exec();
}
```
在这个例子中,我们首先创建了一个窗口,然后定义了一个`drawLine`函数,它接受一个QWidget指针和两个Point类型的坐标作为输入。在函数内部,我们创建了QPainter对象并设置了画笔颜色,然后调用了`drawLine()`方法绘制从A到B的直线。
如果你想绘制更复杂的曲线,比如贝塞尔曲线,可以使用`drawCurve()`函数,传入控制点和结束点。例如:
```cpp
void drawBezier(QWidget* widget, const Point& start, const Point& control, const Point& end) {
QPainter painter(widget);
painter.drawBezier(start.x, start.y, control.x, control.y, end.x, end.y);
}
```
请记住要在Qt环境中运行这个代码,因为涉及到GUI操作。
阅读全文