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);
结果
默认情况下,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);