Qt QPolarChart极坐标图(阿基米德线、四叶曲线、六叶花瓣、三叶花瓣、心形曲线)


  QChart还有专门画极坐标的类QPolarChart,它的界面是一个圆盘。注意在使用之前,包括命名空间QT_CHARTS_USE_NAMESPACE,.pro文件中也要增加QT += charts. 1 #include <QApplication> 2 #include <QDebug> 3 #include <QtCharts/QScatterSeries> 4 #include <QtCharts/QLineSeries> 5 #include <QtCharts/QPolarChart> 6 #include <QtCharts/QValueAxis> 7 #include <QtCharts/QChartView> 8 #include "mainwindoh" 9 //[1] 10 QT_CHARTS_USE_NAMESPACE 11 12 int main(int argc, char *argv[]) 13

修改间隔:

  setTickCount(int count)设置大刻度线的数目,默认是5,不能小于2。程序中设置的是9,但是数一下好像不对。setTickCount(4)换个4体验一下。对于半径,第4条线就是圆心,看不太出来。对于角度,第1条和第4条线会重合。

修改主题风格:

  QPolarChart自带了一些主题,跟手机一样可以换主题,默认主题就是上面的效果,换个Dark主题:

polarChart>setTheme(QChart::ChartThemeDark); //设置主题

  还有蓝色,棕色等其他主题,具体主题如下,具体颜色可以自己试试。

设置交替阴影:

  为了实现交替颜色显示,实现可以通过设置以下阴影属性实现,默认颜色是黑色。

angleAxis>setShadesVisible(true);

  为了适应不同的风格,颜色是可以自定义的:

angleAxis>setShadesBrush(QBrush(QColor(199, 144, 235)));

改线为点:

  QLineSeries画出来的是线,将它改成QScatterSeries,画出来的是独立的点:

  这个点的大小可以修改,通过setMarkerSize()设置大小

seriesLine>setMarkerSize(1); //设置点大小

  修改坐标可以画出不同的图案,比如这样的螺旋线p=半徑*角度:

  这条绿线是通过多个点组成,颜色也可以改,但是改成曲线的话,画出的效果不理想,如果谁用曲线画出来这样的欢迎告诉我.

1 for (double i=0; i<=360*2; i+=0.5) //添加点 2 8 seriesLine>append(angle, i/2.0); 9 } 10 seriesLine>setPen(QPen(QColor(153, 232, 83), 2)); //设置线的颜色

完整的代码如下:

1 #include <QApplication> 2 #include <QDebug> 3 #include <QtCharts/QScatterSeries> 4 #include <QtCharts/QLineSeries> 5 #include <QtCharts/QPolarChart> 6 #include <QtCharts/QValueAxis> 7 #include <QtCharts/QChartView> 8 #include "mainwindoh" 9 //[1] 10 QT_CHARTS_USE_NAMESPACE 11 12 int main(int argc, char *argv[]) 13 54 seriesLine>append(angle, i/2.0); 55 } 56 seriesLine>setPen(QPen(QColor(153, 232, 83), 2)); 57 58 59 60 //[1] 61 QChartView *polarChartView = new QChartView(); 62 polarChartView>setChart(polarChart); 64 MainWindow w; 65 SetWidget(polarChartView); 66 show(); 67 //[1]! 68 return a.exec(); 69 }

再画几个其他类型的线:

四叶曲线1:p=半径*fabs(sin(2*角度)):

1 int radius = 200; 2 for (double angle=0; angle<=360; angle+=1) 3

四叶曲线2:p=半径*fabs(cos(2*角度)):

1 int radius = 200; 2 for (double angle=0; angle<=360; angle+=1) 3

六叶花瓣:

1 //六叶花瓣 p=半径*fabs(cos(3*角度)) 2 int radius = 200; 3 for (double angle=0; angle<=360; angle+=1) 4

三叶花瓣:

1 //三叶花瓣 p=半径*cos(3*角度) 2 int radius = 200; 3 for (double angle=0; angle<=360; angle+=1) 4

玫瑰曲线有规律,

r = sin ( k θ ) 或 r = cos (k θ )

当 k 是奇数时,玫瑰曲线有 k 个花瓣;当 k 是偶数时,玫瑰曲线有 2k 个花瓣。

心形曲线:

1 //心形曲线 p=半径*(1cos(角度)) 2 int radius = 100; 3 for (double angle=0; angle<=360; angle+=1) 4

这心形下方还挺饱满,跟扑克上的红心差很大



上一篇:Qt .pro文件详解

下一篇:Qt qss如何设置字体大小


Qt
Copyright © 2002-2019 k262电脑网 www.k262.cn 皖ICP备2020016292号
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!QQ:251442993 热门搜索 网站地图