2016-03-07 254 views
0

使用Qwt我必须做一个自定义x轴的情节,我可以在程序执行下更改刻度标签。 为了做到这一点我已经超负荷labelQwtScaleDraw这样的:QwtPlot更新自定义轴

H-文件:

class TimeScaleDraw : public QwtScaleDraw 
{ 
public: 
    TimeScaleDraw(); 
    virtual QwtText label(double) const; 
    void setTimeScale(double factor, QString unit); 
private: 
    double factor; 
    QString unit; 
}; 

CPP-文件:

TimeScaleDraw::TimeScaleDraw() 
{ 
    factor = 1.0; 
    unit = "s"; 
} 

QwtText TimeScaleDraw::label(double val) const 
{ 
    return QwtText(QString::number(val*factor) + unit); 
} 

void TimeScaleDraw::setTimeScale(double factor, QString unit) 
{ 
    this->factor = factor; 
    this->unit = unit; 
} 

这工作得很好,如果我调用该方法setTimeScale(2.0, "sec)从我的Qt窗口构造函数。但是,如果我尝试在例如时调用该方法。一个按钮被按下了,那么它什么也不做? 我曾尝试致电replot()updateAxes()但这没有任何改变。

有什么建议吗?

回答

0

我自己找到了解决方案。 我需要拨打invalidateCache()