Qwt отключить научное обозначение для меток осей

По умолчанию Qwt отображает большие числа на оси в экспоненциальном представлении:

метки оси в экспоненциальном представлении

Для моего приложения я действительно хотел бы отключить это ИЛИ переформатировать метки. Просматривая документацию класса, не похоже, что какой-либо из QwtScale классов имеет вариант за это. Можно ли реализовать такое поведение, создав новый класс? Если да, то от какого класса он должен быть производным и какие члены нужно будет перегрузить?


person Nicolas Holthaus    schedule 24.09.2015    source источник
comment
Просто взгляните на этот пост plot" title="изменить отметку оси и метку для переключения между миллиметром и дюймом в графике qwt"> stackoverflow.com/questions/18587571/ Вы можете переопределить класс рисования масштаба, как я.   -  person bkausbk    schedule 24.09.2015
comment
Один дополнительный комментарий для вашего особого случая, переопределения QwtScaleDraw::label(double) в вашем собственном производном классе QwtScaleDraw должно быть достаточно.   -  person bkausbk    schedule 24.09.2015
comment
@bkausbk ваш ответ действительно помог мне решить пару проблем, я бы хотел проголосовать за него по одному разу за каждую!   -  person Nicolas Holthaus    schedule 15.10.2015


Ответы (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);

Результат

метки осей без экспоненциального обозначения

person Nicolas Holthaus    schedule 15.10.2015
comment
хороший ответ удалить точку с запятой из виртуальной метки QwtText (двойное значение) const override; хоть - person Conrad Jones; 13.02.2020