QT-可视化图表功能

25 篇文章 6 订阅


说明

需要注意的是,工程都是在Release编译的,因为只配置Release的,如果你用Debug编译是编译不过去的。


一、效果演示

请添加图片描述

二、关键程序

代码如下:

void _Bar_Chart::initial()
{
	QFont font("微软雅黑",15);
	font.setBold(true);

	d_ptr->pSeries->setVisible(true);                                            // 设置条形图是否可视化
	d_ptr->pSeries->setBarWidth(0.7);                                            // 设置Bar宽
	d_ptr->pSeries->setLabelsVisible(true);                                      // 设置标签是否可视化
	d_ptr->pSeries->setLabelsAngle(0);                                           // 设置标签的角度
	d_ptr->pSeries->setLabelsFormat("@value");                                   // 设置标签显示的格式
	d_ptr->pSeries->setLabelsPosition(QAbstractBarSeries::LabelsOutsideEnd);     // 设置标签的位置
	d_ptr->pSeries->setLabelsPrecision(50);                                      // 标签中显示的最大有效位数

	d_ptr->pChart->setTitle("");
	d_ptr->pChart->addSeries(d_ptr->pSeries);
	d_ptr->pChart->setAnimationOptions(QChart::SeriesAnimations);
	d_ptr->pChart->setAnimationOptions(QChart::AllAnimations);                   // 设置启用或禁用动画
	d_ptr->pChart->setBackgroundBrush(QBrush(QColor(170,170,255)));              // 设置背景色,主题和背景二选一
	d_ptr->pChart->setLocalizeNumbers(true);                                     // 数字是否本地化
	d_ptr->pChart->createDefaultAxes();                                          // 创建默认轴
	d_ptr->pChart->setTitleBrush(QBrush(QColor(255, 255, 255)));                 // 设置标题Brush
	d_ptr->pChart->setTitleFont(font);                                           // 设置标题字体

	d_ptr->pChart->legend()->setVisible(true);
	d_ptr->pChart->legend()->setAlignment(Qt::AlignTop);                         // 对齐
	d_ptr->pChart->legend()->setLabelColor(QColor(255, 255, 255));               // 设置标签颜色
	d_ptr->pChart->legend()->setVisible(true);                                   // 设置是否可视
	d_ptr->pChart->legend()->setBorderColor(QColor(255, 255, 255, 255));         // 设置边框颜色
	font.setPointSize(FONT_SIZE_TEXT);
	d_ptr->pChart->legend()->setFont(font);

	font.setPointSize(FONT_SIZE_TEXT);
	d_ptr->pCategoryAxis->setLabelsFont(font);

	d_ptr->pChart->setAxisX(d_ptr->pCategoryAxis, d_ptr->pSeries);               
	d_ptr->pChart->axisX(d_ptr->pSeries)->setVisible(true);
	d_ptr->pChart->axisX(d_ptr->pSeries)->setRange(0, 10000);                    
	d_ptr->pChart->axisX(d_ptr->pSeries)->setTitleText("");
	font.setPointSize(10);
	d_ptr->pChart->axisX(d_ptr->pSeries)->setTitleFont(font);
	d_ptr->pChart->axisX(d_ptr->pSeries)->setTitleVisible(true);
	font.setPointSize(FONT_SIZE_TEXT);
	d_ptr->pChart->axisX(d_ptr->pSeries)->setLabelsFont(font);

	//X轴网格
	d_ptr->pChart->axisX(d_ptr->pSeries)->setGridLineColor(QColor(255, 255, 255));  //设置网格线颜色
	d_ptr->pChart->axisX(d_ptr->pSeries)->setGridLineVisible(true);

	//X轴标签
	d_ptr->pChart->axisX(d_ptr->pSeries)->setLabelsAngle(0);
	d_ptr->pChart->axisX(d_ptr->pSeries)->setLabelsColor(QColor(255, 255, 255));

	font.setPointSize(FONT_SIZE_TEXT);
	d_ptr->pChart->axisX(d_ptr->pSeries)->setLabelsFont(font);
	d_ptr->pChart->axisX(d_ptr->pSeries)->setLabelsVisible(true);

	d_ptr->pChart->axisX(d_ptr->pSeries)->setLinePenColor(QColor(255, 255, 255));
	d_ptr->pChart->axisX(d_ptr->pSeries)->setLineVisible(true);

	d_ptr->pChart->axisY(d_ptr->pSeries)->setVisible(true);
	d_ptr->pChart->axisY(d_ptr->pSeries)->setRange(0, 10000);
	d_ptr->pChart->axisY(d_ptr->pSeries)->setTitleText("");
	d_ptr->pChart->axisY(d_ptr->pSeries)->setTitleBrush(QBrush(QColor(255, 255, 255)));

	font.setPointSize(10);
	d_ptr->pChart->axisY(d_ptr->pSeries)->setTitleFont(font);
	d_ptr->pChart->axisY(d_ptr->pSeries)->setTitleVisible(true);

	d_ptr->pChart->axisY(d_ptr->pSeries)->setGridLineColor(QColor(255, 255, 255));
	d_ptr->pChart->axisY(d_ptr->pSeries)->setGridLineVisible(true);
	d_ptr->pChart->axisY(d_ptr->pSeries)->setLabelsAngle(0);
	d_ptr->pChart->axisY(d_ptr->pSeries)->setLabelsColor(QColor(255, 255, 255));
	font.setPointSize(FONT_SIZE_TEXT);
	d_ptr->pChart->axisY(d_ptr->pSeries)->setLabelsFont(font);
	d_ptr->pChart->axisY(d_ptr->pSeries)->setLabelsVisible(true);

	d_ptr->pChart->axisY(d_ptr->pSeries)->setLinePenColor(QColor(255, 255, 255));
	d_ptr->pChart->axisY(d_ptr->pSeries)->setLineVisible(true);
	d_ptr->pChart->axisY(d_ptr->pSeries)->setMinorGridLineColor(QColor(255, 255, 255));


	QChartView *chartView = new QChartView(d_ptr->pChart);
	chartView->setRenderHint(QPainter::Antialiasing);

	QHBoxLayout *hb = new QHBoxLayout(this);
	hb->setMargin(0);
	hb->addWidget(chartView);
	this->setContentsMargins(0, 0, 0, 0);

	QObject::connect(d_ptr->pSeries, &QBarSeries::hovered, [](bool status, int index, QBarSet*barset)
	{
		if (status)
		{
			qreal value = barset->at(index);

			QToolTip::showText(QCursor::pos(), QString::number(value, 'f', 2));
		}

	});
}

三、代码链接

程序链接

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的大海贼

联系博主,为您提供有价值的资源

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值