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

Qwt turn off scientific notation for axis labels

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

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

感谢 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);

结果