说明
需要注意的是,工程都是在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));
}
});
}