QChart类是管理图表系列、图例和轴的图形表示。想知道某段代码实现的原理,最直观的就是查看框架库的底层源代码,同时也可以锻炼阅读他人代码的能力及学习人家的某些高妙语法。来看看Qt关于缩放的实例
实例中表明是摁键盘上的+/-进行缩放功能,调用QChart类的zoomIn()和zoomOut()。找到QChart的源代码如下:d_ptr又是什么东西,且看
原来是QChartPrivate类哦,继续找到QChartPrivate的zoomIn(qreal factor)源代码
原来是根据原有视图范围大小和缩放因子按比例缩小得出新的矩形面积,m_dataset又是什么东西??
继续找到ChartDataSet文件类中的zoomInDomain(const QRectF &rect);
这里就是遍历图层,接着层层缩放,其中d_ptr是qabstractseries.h文件中 QScopedPointer<QAbstractSeriesPrivate> d_ptr;的定义,来看看domain()是什么东西?
在添加图层addSeries()函数中 申请XYDomain()。继续找到XYDomain文件中的zoomIn()函数。如下图所示
根据计算好矩形框获取最小值minX,minY和最大值maxX,maxY设置视图的横纵坐标的范围。从这个例子可以看出,Qt源代码基本没有做任何的异常考虑,所以一般用windbg工具来定位程序闪退,内存失败等等bug。