環境:Win10+VS2015+Qt5.9.7
首先創建一個Qt GUI Application。工程名:myChart。
在界面中顯示圖表,可以將其嵌入浮窗等,單個圖表顯示如下所示。
頭文件
myChart.h
#pragma once
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QGridLayout>
#include <QtCharts/QPieSeries>
#include <QtCharts/QChartView>
#include "ui_myChart.h"
#pragma execution_character_set("utf-8")
QT_CHARTS_BEGIN_NAMESPACE
class QChartView;
class QChart;
QT_CHARTS_END_NAMESPACE
QT_CHARTS_USE_NAMESPACE
class myChart : public QMainWindow
{
Q_OBJECT
public:
myChart(QWidget *parent = Q_NULLPTR);
private:
Ui::myChartClass ui;
QList<QChartView *> m_charts;
};
源文件
myChart.cpp
#include "myChart.h"
myChart::myChart(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
QGridLayout *baseLayout = new QGridLayout();
QPieSeries *series = new QPieSeries();
series->append("合格", 0.8)->setColor(QColor(0, 200, 200)); // 構造兩個餅狀分區
series->append("不合格", 0.2)->setColor(QColor(200, 150, 0));//設置每個分區的佔比與顏色
series->setLabelsVisible(); //每個分區label顯示
QChart *chart = new QChart();
chart->addSeries(series);
chart->setTitle("實時統計");
chart->legend()->hide(); //是否顯示圖例
chart->setAnimationOptions(QChart::AllAnimations); // 設置顯示時的動畫效果
QChartView *chartView; //構造圖表視圖
chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing); //抗鋸齒處理
//chartView->chart()->setTheme(QChart::ChartThemeBlueCerulean);
baseLayout->addWidget(chartView, 1, 0);
m_charts << chartView;
setLayout(baseLayout);
QGridLayout *vlayout = new QGridLayout;
vlayout->addLayout(baseLayout, 0, 0);
QWidget *cornerWidget = new QWidget;
cornerWidget->setLayout(vlayout);
setCentralWidget(cornerWidget);
}
運行效果:
若直接使用表格主題設置格式,即
chartView->chart()->setTheme(QChart::ChartThemeBlueCerulean);
則,有類似對應的主題效果: