本文章基於博主在使用QtCharts中一些經驗總結,相關了Qt類有QVXYModelMapper,CustomTableModel(一個繼承了QAbstractTableModel的類,用於實現本身的model),QScatterSeries與QLineSeriesapp
QVXYModelMapper類是線,樣條線和分散線系列的垂直模型映射器。
模型映射器能夠使用派生自QAbstractItemModel類的數據模型做爲圖表的數據源。 垂直模型映射器用於建立線,樣條線或散點圖系列與以列連續保存連續數據點座標的數據模型之間的鏈接。模型和系列屬性均可以用來操縱數據。 模型映射器使系列和數據模型保持同步。函數
//頭文件聲明mapper與mapper2等變量 ... //cpp文件 chart = new QChart; chart->setAnimationOptions(QChart::AllAnimations);//啓動chart的全部動畫 model = new CustomTableModel;//初始化自定義模型 mapper = new QVXYModelMapper(this); mapper2 = new QVXYModelMapper(this); //series 1 系列1 oneSeries = new QLineSeries;//這是一個線性系列 oneSeries->setName("Line 1"); mapper->setXColumn(2);//用model的第三和第四系列來映射 mapper->setYColumn(3);// mapper->setSeries(oneSeries); mapper->setModel(model); chart->addSeries(oneSeries); ...... chartView = new QChartView(chart); chartView->setRenderHint(QPainter::Antialiasing);
//使用默認的座標(必定要用否則不會顯示圖表) chart->createDefaultAxes(); //使用你本身自定義的座標軸(使用自定義model中的函數從model中得到行列的最大最小值) int xmin, xmax, ymin, ymax; int wjh, dcc; xmin = model->getXMin(); xmax = model->getXMax(); wjh = (xmax - xmin)/4; ymin = model->getYMin(); ymax = model->getYMax(); dcc = (ymax - ymin) / 4; chart->axisX()->setRange(xmin-wjh,xmax+wjh); chart->axisY()->setRange(ymin-dcc,ymax+dcc);