【问题标题】:Qwt turn off scientific notation for axis labelsQwt 关闭轴标签的科学记数法
【发布时间】:2015-09-24 12:13:33
【问题描述】:

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

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

【问题讨论】:

  • 看看这个帖子stackoverflow.com/questions/18587571/…你可以像我一样覆盖缩放绘制类。
  • 针对您的特殊情况的附加注释,在您自己的派生 QwtScaleDraw 类中覆盖 QwtScaleDraw::label(double) 就足够了。
  • @bkausbk 你的回答实际上帮助我解决了几个问题,我希望我可以为每个问题投票一次!

标签: c++ qt qwt scientific-notation


【解决方案1】:

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

结果

【讨论】:

  • 好答案从“virtual QwtText label(double value) const override;”中删除分号虽然
猜你喜欢
  • 1970-01-01
  • 2017-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-26
  • 2016-04-12
  • 2015-08-01
相关资源
最近更新 更多