Huier_YFB 2024-03-08 13:28 采纳率: 0%
浏览 8

(请教)图例部分删除问题

你好,我按照您的方法,绘制了竖线,但是下方很多图例,我只想保留两个,其他删除,该怎么处理?我看了资料,图例没有删除部分的接口函数,图形如下:

img


每条竖线都用了一个QLineSeries,所以图例就有许多重复的

    QList<QLineSeries*> vLines;
    for (double timestamp : startupEventTimestamps) 
    {
        QLineSeries* vLine = new QLineSeries();
        vLine->clear(); //清除数据
        vLine->append(timestamp, 1.0);
        vLine->append(timestamp, 1.5);
        QPen    pen;
        pen.setStyle(Qt::SolidLine);//Qt::SolidLine, Qt::DashLine, Qt::DotLine, Qt::DashDotLine
        pen.setWidth(1);
        pen.setColor(Qt::darkYellow);
        vLine->setPen(pen); //折线序列的线条设置
        chart->addSeries(vLine);
        vLines.append(vLine);
    }

  • 写回答

4条回答 默认 最新

  • 关注

    Huier_YFB 下午好🌅🌅🌅
    本答案参考ChatGPT-3.5

    您好!在QtCharts中,虽然没有直接删除单个图例的接口函数,但可以通过以下方式来实现只显示部分图例:

    解决方案:

    1. 设置图例标签(Legend Labels):为每个QLineSeries设置一个唯一的名称(或显示标签),然后在添加到图表后,仅对需要显示图例的系列进行图例项(legend item)的关联。
    for (int i = 0; i < startupEventTimestamps.size(); ++i) 
    {
        QLineSeries* vLine = new QLineSeries();
        // ... 其他绘图代码不变 ...
        
        // 设置系列的名称,比如保留前两个图例
        if (i < 2) {
            vLine->setName(QStringLiteral("竖线 %1").arg(i + 1));
        } else {
            // 对于不需要显示图例的系列,可以设置为空字符串或其他不展示内容
            vLine->setName(QString());
        }
        
        chart->addSeries(vLine);
        vLines.append(vLine);
    
        // 只关联前两个图例到图例项
        if (i < 2) {
            chart->legend()->markers(vLine).first()->setVisible(true); // 显示图例
        } else {
            chart->legend()->markers(vLine).first()->setVisible(false); // 隐藏图例
        }
    }
    

    请注意,这种方法适用于Qt Charts版本允许手动隐藏/显示图例项的情况。不同Qt版本可能对此支持程度不同,请根据实际使用的Qt版本调整代码。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月8日

悬赏问题

  • ¥15 Apache显示系统错误3该如何解决?
  • ¥30 uniapp小程序苹果手机加载gif图片不显示动效?
  • ¥20 js怎么实现跨域问题
  • ¥15 C++dll二次开发,C#调用
  • ¥15 请教,如何使用C#加载本地摄像头进行逐帧推流
  • ¥15 Python easyocr无法顺利执行,如何解决?
  • ¥15 为什么会突然npm err!啊
  • ¥15 java服务连接es读取列表数据,服务连接本地es获取数据时的速度很快,但是换成远端的es就会非常慢,这是为什么呢
  • ¥15 vxworks交叉编译gcc报错error: missing binary operator before token "("
  • ¥15 JSzip压缩文件时如何设置解压缩密码