zoukankan      html  css  js  c++  java
  • qwt总结1

    废话不想太多,说下自己的使用总结。

    一般来说,对于一个图表。 可能的话,应该有一个坐标轴,QWT中,是用QwtPlot这个类 来描述一个图的坐标系图(只表示坐标系的背景,没有描点)。坐标(刻度)的设置,是使用其他类(如类名带有Axis、Scale)来设置的,但是他们大多设置的是相应的样式细节,具体的数值依然是由Plot设置。比如,我想设置一个坐标系的横坐标范围,是使用Plot中的  setAxisScale这个函数来完成。(名字翻译起来,感觉逻辑对不上,哎,原谅我愚笨的英语水平)

        setAxisScale( QwtPlot::xBottom,-0.5,6.5,1); //设置坐标轴的范围

        setAxisScale( QwtPlot::yLeft,0,30);

    第一个参数。。看名字就能知道它意思了。后面就是范围。 设置轴刻度线。好吧。

    然后还有个函数,是用来获取 图的背景中的画布(canvas)的。 就是获取Plot中应该有的canvas()函数,就能获得相应的画布。(这里我没有玩过,到时候看看)

    然后,刻度线的样式,是使用setAxisScaleDraw,来获取一个ScaleDraw对象,来描述刻度线的,里面有一个label虚函数,它是主要用来重载的,这样能设置坐标轴上 主刻度线,副刻度线和单位刻度线 的 长度 颜色 等风格。

    在图表中,最重要的应该是数据的设置了,这里我只使用了一种柱状图。柱状图的特征是 横坐标是一种interval(间隔)。纵坐标是一个值。因此,在设置数据的时候,使用的是函数setData 其参数是 QwtIntervalSeriesData  中文翻译过来 是 间隔的一系列的数据

    setData( new QwtIntervalSeriesData( samples ) );

    QwtIntervalSeriesData构造函数所传递的参数类型是

    QVector<QwtIntervalSample>

    QwtIntervalSample构造了一段 (xi-xj,y) 或者(x,yi-yj)类型的数据。不过  构造函数的第一个参数是一个QwtInterval 即一个数的范围,第二个参数就是一个点。具体使用xi-xj 还是yi-yj  这好像是根据 具体使用的图 而决定的。

    代码:

      int numValues = ques_page_vector.size();
        QVector<QwtIntervalSample> samples( numValues );
        for ( int i = 0; i < numValues; i++ )
        {
            QwtInterval interval( double( i  - 0.25 ), i + 0.25 );
            interval.setBorderFlags( QwtInterval::ExcludeMaximum );
            int t = ques_page_vector[i];
            double q = (*dataWidget->question_perScore)[t];
            samples[i] = QwtIntervalSample( q , interval );
        }


    最后一个设置的东西就是 Legend(图例)

    使用方法是先 new 一个QwtLegend 类

    然后使用setItemMode 来确定Legend的模式。

    最后调用Plot中的insertLegend方法,将Legend插入。

     希望慢慢锻炼能练起来吧~~~加油!

  • 相关阅读:
    P3619 魔法
    【HAOI2014】遥感监测
    cdcq的独立博客上线辣!-> http://cdcq.coding.me/blog/
    重复型图床
    【BZOJ1213】高精度开根
    前后端技术
    【HAOI2011】problem b
    【HAOI2011】problem a
    【BZOJ4553】【TJOI2016】【HEOI2016】序列
    【HAOI2015】 T1
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/3795791.html
Copyright © 2011-2022 走看看