当前位置:编程学习 > wap >>

学习QWT遇到的问题

最近在学习QWT6.1.0,在看里面自带的例子cpuplot时,遇到这样一段代码:

class TimeScaleDraw: public QwtScaleDraw
{
public:
    TimeScaleDraw( const QTime &base ):
        baseTime( base )
    {
    }
    virtual QwtText label( double v ) const//????????
    {
        QTime upTime = baseTime.addSecs( static_cast<int>( v ) );
        return upTime.toString();
    }
private:
    QTime baseTime;
};

发现在后面的代码中函数QwtText label(double)并没有被调用,但是把这个函数注释掉后又不能实现相应的功能,这个函数是在什么时候被调用的呢,难道是在使用TimeScaleDraw类创建对象时会自动调用该函数吗,可这个函数又不在类的构造函数里,请高手指点迷津~~~~ --------------------编程问答-------------------- TimeScaleDraw的基类是QwtAbstractScaleDraw,
QwtAbstractScaleDraw有纯虚函数:
virtual QwtText label( double ) const;

代码的其他地方调用QwtAbstractScaleDraw::label的时候可能执行的就是TimeScaleDraw::label。
这就是多态。

楼主查找下label函数的使用,就是右键 find usages,就能找到这里。
楼主可以想一下MousePressEvent也没有调用,为什么鼠标一点就会执行。
新开线程时run()也没有调用,但是为什么一start,run里面的内容就会执行。

参考:http://baike.baidu.com/link?url=YqCKDCS_l7lJE0Ee00tTpnRO_ypMxNeB3K74zmJMDeYztYF9_BUrSmcitsltu_Fnwi-vlqwAVfSXKoHygJ2nCK --------------------编程问答--------------------
引用 1 楼 haltwang 的回复:
TimeScaleDraw的基类是QwtAbstractScaleDraw,
QwtAbstractScaleDraw有纯虚函数:
virtual QwtText label( double ) const;

代码的其他地方调用QwtAbstractScaleDraw::label的时候可能执行的就是TimeScaleDraw::label。
这就是多态。

楼主查找下label函数的使用,就是右键 find usages,就能找到这里。
楼主可以想一下MousePressEvent也没有调用,为什么鼠标一点就会执行。
新开线程时run()也没有调用,但是为什么一start,run里面的内容就会执行。

参考:http://baike.baidu.com/link?url=YqCKDCS_l7lJE0Ee00tTpnRO_ypMxNeB3K74zmJMDeYztYF9_BUrSmcitsltu_Fnwi-vlqwAVfSXKoHygJ2nCK

十分感谢您的回答,请给我讲一下为什么调用start时就会自动调用run,为什么鼠标按下会调用MousePressEvent函数,这是用什么机制实现的,谢谢啦
补充:移动开发 ,  Qt
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,