因为平时很少用QCharts,所以对一些样式自定义的设置不熟悉。本来想添加一个背景图片,结果发现只有setBackgroundBrush这种接口。百度一通之后,只找到个隐藏QChart背景的博客(https://blog.csdn.net/qq_40182127/article/details/82113267)。受到启发,自己一番折腾,总算把背景给设置出来了,原来也挺简单的。

我是参照示例的BarChart来修改的,

首先,给QChart类去掉背景渲染:

chart->setBackgroundVisible(false);

然后,给QChartView加上背景图的样式表就能显示图片了。

setStyleSheet(R"(QGraphicsView{ background-image:url(:/backimg.png);})");

下面是设置前后对比图(完整代码及工程文件链接在本文末尾):

(其实默认样式一般也足够了,不过有时候Ui会有特殊需求)

这里有两个小插曲,一是我把图片url用绝对路径测试了下之后再改回来,居然设置无效(重新构建也不行),把生成的文件删了之后重新生成才正常了;第二个就是,我给QChartView设置样式表,如果填 “QChartView{}” 的话不生效,填他的父类 “QGraphicsView{}” 才有效了。

代码链接:https://github.com/gongjianbo/MyTestCode/tree/master/Qt/TestQt_20190806_QChartsBackground

主要代码:(参照示例的BarChart来修改)

//main.cpp
#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QtCharts/QChartView>
#include <QtCharts/QBarSeries>
#include <QtCharts/QBarSet>
#include <QtCharts/QLegend>
#include <QtCharts/QBarCategoryAxis>QT_CHARTS_USE_NAMESPACEint main(int argc, char *argv[])
{QApplication a(argc, argv);//![1]QBarSet *set0 = new QBarSet("Jane");QBarSet *set1 = new QBarSet("John");QBarSet *set2 = new QBarSet("Axel");QBarSet *set3 = new QBarSet("Mary");QBarSet *set4 = new QBarSet("Samantha");*set0 << 1 << 2 << 3 << 4 << 5 << 6;*set1 << 5 << 0 << 0 << 4 << 0 << 7;*set2 << 3 << 5 << 8 << 13 << 8 << 5;*set3 << 5 << 6 << 7 << 3 << 4 << 5;*set4 << 9 << 7 << 5 << 3 << 1 << 2;
//![1]//![2]QBarSeries *series = new QBarSeries();series->append(set0);series->append(set1);series->append(set2);series->append(set3);series->append(set4);//![2]//![3]QChart *chart = new QChart();chart->addSeries(series);chart->setTheme(QChart::ChartThemeQt);chart->setTitle("Simple barchart example");chart->setAnimationOptions(QChart::SeriesAnimations);chart->setBackgroundVisible(false);//chart->setBackgroundBrush(QBrush("darkCyan"));
//![3]//![4]QStringList categories;categories << "Jan" << "Feb" << "Mar" << "Apr" << "May" << "Jun";QBarCategoryAxis *axis = new QBarCategoryAxis();axis->append(categories);chart->createDefaultAxes();chart->setAxisX(axis, series);
//![4]//![5]chart->legend()->setVisible(true);chart->legend()->setAlignment(Qt::AlignBottom);
//![5]//![6]QChartView *chartView = new QChartView(chart);chartView->setRenderHint(QPainter::Antialiasing);//chartView->setContentsMargins(0,10,0,10);//chartView->setBackgroundBrush(QBrush(Qt::yellow));//chartView->setStyleSheet("");//chartView->setBackgroundBrush(Qt::transparent);//![6]//![7]QMainWindow window;window.setCentralWidget(chartView);window.setContentsMargins(10,10,10,10);window.setStyleSheet(R"(QMainWindow{ background-color:green;}QMainWindow QWidget{ background-color:cyan;}QGraphicsView{ background-image:url(:/backimg.png);})");window.resize(420, 300);window.show();
//![7]return a.exec();
}

QtCharts:给QChartView添加背景图片相关推荐

  1. java 添加图片背景_java添加背景图片

    总结:我们通常实现添加背景图片很容易,但是再添加按钮组件就会覆盖图片.原因是: 有先后啊.setlayout();与布局有很大关系 请调试代码的时候,仔细揣摩.我晕了 还可以添加文本框,密码框 fra ...

  2. VC中为对话框添加背景图片

    From: http://blog.ezcn8.com/2011/06/11/vc%E4%B8%AD%E4%B8%BA%E5%AF%B9%E8%AF%9D%E6%A1%86%E6%B7%BB%E5%8 ...

  3. .net的label的背景如何设置成为透明_css如何设置背景图片?background属性添加背景图片...

    在前端开发过程中,为了页面的美观,往往都会给html页面添加背景图片.那么如何利用css设置html中用图片做背景?本章就给大家介绍css怎样设置背景图片.有一定的参考价值,有需要的朋友可以参考一下, ...

  4. java添加背景图片_Java怎么添加背景图片

    首先,导入相关的包: import java.awt.BorderLayout; import java.awt.Container; import javax.swing.ImageIcon; im ...

  5. winformbutton边框怎么改_C#(winform)为button添加背景图片,并去掉各种边框

    1.既然是添加背景图片 所以这里应该使用 Button.BackgroudImage = "" ;来设置图片 而不应该使用  Button.Image = "" ...

  6. MFC中 给基于CFormView的单文档添加背景图片

    关于基于CFormView的单文档应用程序,添加一个图片背景的方法之一如下: 下面是利用LoadImage实现.(先在程序目录中添加背景图片back.bmp) 1.在view类中添加类成员变量:(为C ...

  7. 计算机wold标题文字加背景,office word文档添加背景图片以及背景颜色来美化枯燥乏味的文字...

    在浏览网页的时候,遇到各式各样的好看图片是常用的事,现在的需求就是如何将这些看似比较不错的图片设置为Word的文档背景.设置背景的目的是为了美化文字的同时还可以为文档增姿添彩.看到这里大家是不是有点迫 ...

  8. android 视频做背景图片,视频后面怎么加背景图片?安卓手机给视频添加背景图片的方法...

    狸窝是帮助用户解决问题 提供教程解决方案 在这个过程中有使用我们自己开发的软件 也有网上找的工具 只要帮助用户解决问题就好!同意则往下继续了解学习 ... 注意此教程方案是:『安卓手机端教程方案』.很 ...

  9. c语言mfc怎么插入背景图片,MFC 对话框添加背景图片详细过程(两种方法)

    给对话框添加背景图片方法很多,在此贴出两种很常见的方法.一种是通过读取位图资源显示位图(BitMap) step: 1.创建内存设备上下文: 2.选择位图,将其装入内存设备上下文: 3.使用BitBl ...

最新文章

  1. Mongoose provide access to previous value of property in pre('save')
  2. Q六娱乐网整站源码分享
  3. 逆天了!小米将首发一亿像素手机
  4. 目前8岁女儿上的课程
  5. 14 MySQL--事务函数与流程控制
  6. [转]如何使用BackTrack破解WIFI无线网络的WEP密钥
  7. Fail to queue the whole FAL gap in dataguard一例
  8. 众信金融获“2015最佳绿色贡献奖”
  9. 445.两数相加II(力扣leetcode) 博主可答疑该问题
  10. vs 编译nmake工程
  11. python 移动文件 覆盖_Python操作文件(删除、复制、移动...)
  12. [编译原理读书笔记][第4章 语法分析]
  13. 提高订单成交率的九大技巧,你还不知道吗?
  14. 笔记:新手SEOer必备的WordPress优化插件
  15. Python pandas练习Retuns50stocks股票,纯英文ipynb作业20题,100%正确答案
  16. 【错误处理】RuntimeError: Attempting to deserialize object on CUDA device 1 but torch.cuda.device_count
  17. 解决win7提示不是正版的问题
  18. 用友U8 cloud再升级,为成长型集团注入数智新力量
  19. FMDB的简单应用(4篇)
  20. Vue3 使用expose让父组件直接修改子组件的值

热门文章

  1. 计算机课评语与建议,听课评语问题与建议
  2. 【深扒】深入理解 JavaScript 中的生成器
  3. 图形学算法-网格细分
  4. Element UI结合vue-cropper打造图片裁剪上传组件
  5. man、help帮助命令的使用方法
  6. docker 报错 Structure needs cleaning
  7. 自动安装包括ase、phonopy、pymatgen和q-robot工具的anaconda(python)程序
  8. 量化金融分析AQF(12):配对交易 Pair trading - 考虑时间序列平稳性、协整关系
  9. 4.监听器Listener
  10. 怀旧服服务器维护费用,今日《魔兽世界》怀旧服开启付费转服,不得不看的转服规则与条件...