QWT 的小项目总结 ver 1.0 SP2

今天终于完成了QWT的基础应用功能,有些小高兴,有些小失落。

碰到的问题挺多的,但是却找不到一个有经验的,能不讲的和浮云一样的先辈指导。我知道我的代码风格依旧很烂,但我却不知道有什么办法可以改。也许是自己看别人源代码实在看得太少的缘故吧。我是怎么写 怎么感觉难看。好悲哀。

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

一般来说,对于一个图表。 可能的话,应该有一个坐标轴,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构造了一段 (xi-xj,y) 或者(x,yi-yj)类型的数据。不过  构造函数的第一个参数是一个QwtInterval 即一个数的范围,第二个参数就是一个点。具体使用xi-xj 还是yi-yj  这好像是根据 具体使用的图 而决定的。

代码:

  int numValues = ques_page_vector.size();
    QVector 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插入。

以上总结比较粗糙。。我的语言和代码整理能力真的很挫。。。

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

2012-02-28

1、补充一点。。更新QT SDK的时候发现的。

就是在编译的时候会出现一个warning 说没有加 -enable-auto-import之类的标示。。

这里补上

在qt mingw中相应的编译器下面 qmake.conf中。

找到

QMAKE_LFLAGS =

=号后面 添加  -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc

2、发布后,发现连接不上sqlite数据库。这里找到了一个大牛的文章。

http://www.cuteqt.com/blog/?p=1002

但是,觉得qt真的好搓。。这么多dll。好纠结。哎

你可能感兴趣的:(realloc())