首页 > 其他分享 >Qt 图例类QLegend详解

Qt 图例类QLegend详解

时间:2024-02-22 17:36:28浏览次数:29  
标签:QLegend Qt button chart 图例 font legend

概述
  在Qt绘制图表时,图例并不是由QChart类所管理的,而是交给单独的QLegend类。

  QLegend类负责图例的绘制(包括颜色、线型、字体等),它与图表类QChart的关系是attach和detach。

实例
  参考官方实例:X:\Qt\Qt5.9.0\Examples\Qt-5.9\charts\legend

运行效果:

功能详解

设置图例标签是否粗体

先看看效果:

点击Toggle Bold按钮后,图例中显示的数据系列的名称,变为粗体:

 对应的功能代码为:

1     QFont font = m_chart->legend()->font();
2     font.setBold(!font.bold());
3     m_chart->legend()->setFont(font);

设置图例标签是否斜体

同样的,设置为斜体:

 对应的功能代码为:

1     QFont font = m_chart->legend()->font();
2     font.setItalic(!font.italic());
3     m_chart->legend()->setFont(font);

设置图例标签字体大小

改变字体大小为6:

 对应的功能代码为:

1     QFont font = m_chart->legend()->font();
2     font.setPointSizeF(m_fontSize->value());
3     m_chart->legend()->setFont(font);

图例的对齐格式:

功能代码:

 1 void MainWidget::setLegendAlignment()
 2 {
 3     QPushButton *button = qobject_cast<QPushButton *>(sender());
 4  
 5     switch (m_chart->legend()->alignment()) {
 6     case Qt::AlignTop:
 7         m_chart->legend()->setAlignment(Qt::AlignLeft);
 8         if (button)
 9             button->setText("Align (Left)");
10         break;
11     case Qt::AlignLeft:
12         m_chart->legend()->setAlignment(Qt::AlignBottom);
13         if (button)
14             button->setText("Align (Bottom)");
15         break;
16     case Qt::AlignBottom:
17         m_chart->legend()->setAlignment(Qt::AlignRight);
18         if (button)
19             button->setText("Align (Right)");
20         break;
21     default:
22         if (button)
23             button->setText("Align (Top)");
24         m_chart->legend()->setAlignment(Qt::AlignTop);
25         break;
26     }
27 }

效果:

底部显示、

顶部显示、

左边显示、

右边显示、

图例附着/取消附着到图表

代码:

1         legend->detachFromChart();
2         m_chart->legend()->setBackgroundVisible(true);
3         m_chart->legend()->setBrush(QBrush(QColor(128, 128, 128, 128)));
4         m_chart->legend()->setPen(QPen(QColor(192, 192, 192, 192)));

效果:

 还可以自由地移动图例的位置。功能代码:

1     m_chart->legend()->setGeometry(QRectF(m_legendPosX->value(),
2                                           m_legendPosY->value(),
3                                           m_legendWidth->value(),
4                                           m_legendHeight->value()));

返回到附着效果:

1         legend->attachToChart();
2         legend->setBackgroundVisible(false);

 

标签:QLegend,Qt,button,chart,图例,font,legend
From: https://www.cnblogs.com/ybqjymy/p/18027809

相关文章

  • Qt 设置QPushButton背景色
    刚开始编写的设置背景色代码用的是QPalette类:1QPalettepalette1=ui->pushButton->palette();2palette1.setColor(QPalette::ButtonText,Qt::red);//设置字体颜色为红色3palette1.setColor(QPalette::Button,Qt::green);//设置背景颜色为绿色4ui->pushButton->setPalette......
  • Qt QWindowsWindow::setGeometryDp: Unable to set geometry问题
    总结原因:由于子窗口和父窗口的大小关系不健康,导致父窗口resize失败,失败后会自定义大小解决方法:首先,修改父窗口尺寸,保证其大小可以容纳子部件,可以使用setFixSize()之类的函数修改父窗口尺寸。其次,一定要保证修改父窗口尺寸的函数是放在窗口布局代码之前,如图,我的setIn......
  • Qt 颜色对话框QColorDialog弹出时应用程序输出栏出现QWindowsWindow::setGeometry: Un
    引言在项目中点击按钮,弹出颜色选择对话框,但同时应用程序会在应用程序输出一栏中显示QWindowsWindow::setGeometry:Unabletosetgeometry180x30+345+311(frame:202x86+334+266)onQWidgetWindow/"QColorDialogClassWindow"on"\\.\DISPLAY1".Resultinggeometry:5......
  • qt vs 引用第三方lib
    项目目录,plug是资源文件,ZL.Main是根目录(发布后需要把plug复制在debug中exe同目录 一:该目录填include目录,可以相对路径可以绝对路径 二:该目录填lib目录,可以相对路径可以绝对路径 三:该项填lib文件名,有几个填写几个 第四:配置平台管理器 ......
  • MQTT协议及其使用案例
    MQTT概述MQTT是基于TCP/IP协议栈构建的异步通信消息协议,是一种轻量级的发布、订阅信息传输协议。可以在不可靠的网络环境中进行扩展,适用于设备硬件存储空间或网络带宽有限的场景。使用MQTT协议,消息发送者与接收者不受时间和空间的限制。Docker部署MQTT(采用docker-compose.y......
  • qtcpsocket连接状态
      QTcpSocketsocket;//连接到远程主机socket.connectToHost("remoteHost",1234);//获取连接状态QAbstractSocket::SocketStatesocketState=socket.state();//根据连接状态进行相应处理if(socketState==QAbstractSocket::UnconnectedState){//未连......
  • Qt程序执行报错:"This application failed to start because not Qt platform plugin c
    Qt编译的exe程序执行时报错:出现以上错误的原因是由于的系统环境路径缺失或者exe程序目录下缺少对应的dll导致。以上为缺少对应的Qtplatformplugin。在Qt的安装目录下将platforms整个目录拷贝到exe所在目录下,即可执行。如果提示缺少对于的xxx.dll直接将对应缺失......
  • 给 PyQt5 登录添加记住用户密码功能,并优化一些内容
    使用PyQt5(PySide2)+SQLAlchemy做一个登录注册页(七)本文将介绍自己用PyQt5+SQLAlchemy做的一个登录注册页,使用邮箱接收验证码,本文介绍是前后端未分离的实现方式,后续将出一个前后端分离的,你可以将PyQt5改为PySide2以获得更宽松的开源协议本文由于涉及到的代码较多,将会是一......
  • Qt 设置button互斥,一组button只能选中一个
    一、同一容器内互斥效果1.先在界面是拖入一个控件容器,这里以QGroupBox为例2.再放进来几个按钮控件3.设置按钮属性,第一个红框勾选是设置按钮可选,第二个勾选就是设置自动互斥,当同一容器内的按钮勾选了这个选项就会自动互斥二、不同容器内互斥效果1.还是先设置所要互斥的......
  • 给 PyQt5 注册页,添加注册逻辑代码,实现用户的注册验证
    使用PyQt5(PySide2)+SQLAlchemy做一个登录注册页(五)本文将介绍自己用PyQt5+SQLAlchemy做的一个登录注册页,使用邮箱接收验证码,本文介绍是前后端未分离的实现方式,后续将出一个前后端分离的,你可以将PyQt5改为PySide2以获得更宽松的开源协议本文由于涉及到的代码较多,将会是一......