Qwt关闭轴标签的科学记数法

时间:2015-09-24 12:13:34

标签: c++ qt qwt scientific-notation

默认情况下,Qwt以科学计数法在轴上显示大数字:

axis labels in scientific notation

对于我的应用程序,我真的想关闭它或重新格式化标签。通过class documentation查看,似乎任何QwtScale类都没有选项。可以通过派生一个新类来实现这种行为吗?如果是这样,应该从哪个类派生出来,哪些成员需要重载?

1 个答案:

答案 0 :(得分:0)

感谢bkausbk,我能够提出这个经过修改的QwtScaleDraw

class QScaleDraw : public QwtScaleDraw
{
public:

    explicit QScaleDraw(bool enableScientificNotation = false)
    : m_scientificNotationEnabled(enableScientificNotation)
    {

    }

    virtual QwtText label(double value) const override;
    {
        if (m_scientificNotationEnabled)
        {
            return QwtScaleDraw::label(value);
        } 
        else
        {
            return QwtText(QString::number(value, 'f', 0));
        }
    }

private:

    bool    m_scientificNotationEnabled;                                                

};

然后使用它,你会做类似的事情:

QwtPlot myplot;
myplot->setAxisScaleDraw(xBottom, new QScaleDraw);

结果

axis labels without scientific notation