缄默221 2023-03-14 09:27 采纳率: 100%
浏览 26
已结题

qwtplotmarker实现特征点效果

网上说qwtplotmarker标签可以自定义任何形状,我想实现以qwtplotcurve曲线画出的某一个点为中心做一个圆形,或者是矩形。类似于特征点标注。不知道是不是个人理解问题,实际上无法实现我想要的功能。因为不知道难度,暂时悬赏5元,若难度较高,会追加。效果图如下所示。另,本人用的是qt5.6.2版本。qwt 6.1.4版本。

img

  • 写回答

1条回答 默认 最新

  • hantaocn 2023-03-14 09:33
    关注

    根据您的需求描述和效果图,可以使用QwtPlotMarker进行自定义绘制。您可以通过继承QwtSymbol类来创建自己的符号,然后在QwtPlotMarker中设置该符号并指定位置。

    以下是一个简单的示例,通过继承QwtSymbol实现一个圆形符号:

    class CircleSymbol: public QwtSymbol
    {
    public:
        CircleSymbol()
        {
            setSize(QSize(10, 10));
        }
    
        virtual void drawSymbol(QPainter *painter, const QPointF &center) const
        {
            painter->drawEllipse(center, 5, 5);
        }
    };
    
    

    然后在需要显示标记的地方,使用QwtPlotMarker进行绘制:

    // 创建曲线和数据
    QwtPlotCurve *curve = new QwtPlotCurve("Curve");
    QVector<QPointF> points;
    points << QPointF(1.0, 2.0) << QPointF(2.0, 3.0) << QPointF(3.0, 4.0);
    curve->setSamples(points);
    
    // 创建标记并设置符号和位置
    QwtPlotMarker *marker = new QwtPlotMarker();
    marker->setSymbol(new CircleSymbol());
    marker->setValue(QPointF(2.0, 3.0));
    
    // 添加曲线和标记到绘图区域
    curve->attach(plot);
    marker->attach(plot);
    
    
    

    这个示例中,我们先创建了一个QwtPlotCurve对象,同时添加了一些数据点。然后基于CircleSymbol类实现了一个圆形符号,并将其设置到QwtPlotMarker对象上。最后,我们将QwtPlotCurve和QwtPlotMarker对象都附加到QwtPlot对象中,即可在绘图区域上显示出来。

    您可以根据需要修改CircleSymbol类的实现,以绘制不同形状的符号,例如矩形等。希望这可以帮助到您,如果您有任何其他问题,请随时问我。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    1人已打赏

报告相同问题?

问题事件

  • 系统已结题 3月22日
  • 已采纳回答 3月14日
  • 创建了问题 3月14日

悬赏问题

  • ¥15 echarts动画效果失效的问题。官网下载的例子。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加