2016-03-07 256 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()