2013年3月9日星期六

Qwt 筆記 - 更改 Qwt 圖表上軸線標示的顯示方式


QwtPlot 預設是將輸入的數值 (double 類型) 用 QLocale::system().toString() 來轉換為文字再繪畫出來 (參考 QwtAbstractScaleDraw::label 的說明)
若需要更改標示的顯示方式 (例如: 時間軸的顯示), 我們可以先建立一個承繼 QwtScaleDraw 的 class, 再重寫 label() 功能:

class TimeAxis : public QwtScaleDraw {
public:
explicit TimeAxis();

// override label function
QwtText label(double offset) const;
};

QwtText TimeAxis::label(double offset) const {
// starting time
QTime time(0, 0, 0);

    time = time.addSecs(offset);

    return QwtText(time.toString("hh:mm:ss"));
}

然後用 QwtPlot 的 setAxisScaleDraw() 功能來設定新的軸:

LogPlot::LogPlot(QWidget *parent) : QwtPlot(parent)
{
    this->pTime_axis = new TimeAxis();
    this->setAxisScaleDraw(xBottom, this->pTime_axis);
}

沒有留言: