Qt开发Charts折线图绑定事件

Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QCharts折线图的常用方法及灵活运用。

在上一篇文章中笔者介绍了关于QCharts绘图组件的详细使用方法及接口,本章将继续为绘图组件绑定事件,通常在未绑定事件的图形上所有的元素都是被禁用状态的,我们无法直接操作这些功能,通过绑定图形组件事件将可以实现对图形的各种操作模式,例如可以控制图形的大小,控制线条的显示与消除等。

首先,我们来实现动态显示与隐藏线条功能,还是使用之前的代码这里稍作改进增加一个十五分钟负载统计,接着我们在MainWindow主构造函数中通过markers()得到所有的标签,然后先调用disconnect()断开信号的连接,接着在使用connect()将当前上方三个按钮进行绑定,当按钮被点击则会触发on_LegendMarkerClicked()槽函数;

// 图例被点击后触发
foreach (QLegendMarker* marker, chart->legend()->markers())
{
   QObject::disconnect(marker, SIGNAL(clicked()), this, SLOT(on_LegendMarkerClicked()));
   QObject::connect(marker, SIGNAL(clicked()), this, SLOT(on_LegendMarkerClicked()));
}

接着,我们需要来实现on_LegendMarkerClicked()槽函数的功能,这里需要介绍一个类,QLegendMarker 类是 Qt Charts 模块中用于表示图例标记的基类。这个类有几个派生类,每个派生类代表一种类型的图例标记。

以下是一些常见的派生类:

  1. QLegendMarker::LegendMarkerTypeXY
    • 代表 XY 数据系列的图例标记,通常用于折线图、散点图等。
  2. QLegendMarker::LegendMarkerTypeBar
    • 代表柱状图数据系列的图例标记。
  3. QLegendMarker::LegendMarkerTypePieSlice
    • 代表饼图数据系列的图例标记。
  4. QLegendMarker::LegendMarkerTypeArea
    • 代表面积图数据系列的图例标记。

这些类型分别对应于不同种类的数据系列,因为不同类型的数据系列可能需要不同的图例标记。当你处理 QLegendMarker 的点击事件时,通过检查标记的类型,你可以判断点击的是哪一种类型的图例标记,并作出相应的处理,比如切换数据系列的可见性。

// 在槽函数中获取图例标记的类型
void MainWindow::on_LegendMarkerClicked()
{
    QLegendMarker* marker = qobject_cast<QLegendMarker*>(sender());

    // 获取图例标记的类型
    QLegendMarker::LegendMarkerType type = marker->type();

    // 根据标记的类型执行相应的操作
    switch (type)
    {
        case QLegendMarker::LegendMarkerTypeXY:
            // 处理 XY 数据系列的图例标记
            break;
        case QLegendMarker::LegendMarkerTypeBar:
            // 处理柱状图数据系列的图例标记
            break;
        case QLegendMarker::LegendMarkerTypePieSlice:
            // 处理饼图数据系列的图例标记
            break;
        case QLegendMarker::LegendMarkerTypeAr

相关推荐

  1. Qt开发Charts折线图事件

    2023-12-28 22:14:01       59 阅读
  2. 回车事件怎样

    2023-12-28 22:14:01       54 阅读
  3. js中重复事件

    2023-12-28 22:14:01       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-28 22:14:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-28 22:14:01       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-28 22:14:01       82 阅读
  4. Python语言-面向对象

    2023-12-28 22:14:01       91 阅读

热门阅读

  1. Vue前后端跨域链接

    2023-12-28 22:14:01       63 阅读
  2. vue前端学习笔记

    2023-12-28 22:14:01       69 阅读
  3. 数据库(部分函数)

    2023-12-28 22:14:01       51 阅读
  4. LeetCode 2660. 保龄球游戏的获胜者:模拟

    2023-12-28 22:14:01       57 阅读
  5. docker学习笔记

    2023-12-28 22:14:01       59 阅读
  6. centos 编译安装 make

    2023-12-28 22:14:01       61 阅读
  7. storyBook play学习

    2023-12-28 22:14:01       44 阅读
  8. LeetCode——动态规划

    2023-12-28 22:14:01       42 阅读
  9. 前端---css 元素溢出

    2023-12-28 22:14:01       57 阅读
  10. 2024 Android保活总结

    2023-12-28 22:14:01       57 阅读
  11. 鸿蒙开发ArkTS基础学习-开发准备工具配置

    2023-12-28 22:14:01       51 阅读