学习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 --------------------编程问答--------------------
十分感谢您的回答,请给我讲一下为什么调用start时就会自动调用run,为什么鼠标按下会调用MousePressEvent函数,这是用什么机制实现的,谢谢啦
补充:移动开发 , Qt