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

标签 c++ qt qwt scientific-notation

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

axis labels in scientific notation

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

最佳答案

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

关于c++ - Qwt关闭轴标签的科学记数法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32761035/

相关文章:

c++ - 使用 Visual Studio 2015 编译 OpenCV 2.4.12 时出错

c++ - 将 C++0x 的 atomic<int> 作为非原子访问

c++ - 顺序 key 生成

qt - 带有qt复选框的文件系统 TreeView

c++ - 如何使用Qt/QwtPlot设置固定轴间隔?

c++ - 抽象虚函数的 vtable 中有多少条目?

qt - 如何在 Qt 小部件中捕获 Tab 键

c++ - 在 Qt 中的 C++ 中添加 C 函数时出现问题

c++ - 在QwtPlot scaleDraw中绘制向内刻度线

ubuntu - 使用 qt creator 安装 qwt