Qt开发Charts折线图绑定事件
2023-12-26 22:55:14
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 模块中用于表示图例标记的基类。这个类有几个派生类,每个派生类代表一种类型的图例标记。
以下是一些常见的派生类:
QLegendMarker::LegendMarkerTypeXY
:- 代表 XY 数据系列的图例标记,通常用于折线图、散点图等。
QLegendMarker::LegendMarkerTypeBar
:- 代表柱状图数据系列的图例标记。
QLegendMarker::LegendMarkerTypePieSlice
:- 代表饼图数据系列的图例标记。
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
文章来源:https://blog.csdn.net/softshow1026/article/details/135231856
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!