c++ - Qwt 重新缩放轴

标签 c++ qt qwt

我有一个 QwtPlot,我希望更改轴刻度,而不必更改自己绘制的点的值。

在我的应用程序中,我在 [-10,10] V 范围内(两个轴)绘制以伏特为单位的点。我想通过将每个轴乘以 nm/V 的值来校准每个轴,以将刻度转换为纳米。我想这样做而不必改变点本身的值(value)。完成这项工作最实用的方法是什么?

谢谢

最佳答案

qwt 不允许您在不影响数据的情况下更改轴值。然而,您可以做的是更改轴标签。这将为您提供您正在寻找的明显的缩放效果,但根本不需要操作您的数据。

class QConversionScaleDraw : public QwtScaleDraw
{
public:

    explicit QConversionScaleDraw(double conversionFactor)
    : m_conversionFactor(conversionFactor)
    {

    }

    virtual QwtText label(double value) const override;
    {
        return QwtScaleDraw::label(value * m_conversionFactor);
    }

private:

    double m_conversionFactor;                                                

};

然后使用它:

QwtPlot myplot;
double nmToV = 0.612; // or whatever
myplot->setAxisScaleDraw(xBottom, new QConversionScaleDraw(nmToV));

关于c++ - Qwt 重新缩放轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36689495/

相关文章:

qt - QML:如何通过拖放重新排序转发器项目?里面有些工作代码

c++ - 如何设置qwt路径或环境变量

c++ - 如何在 QwtSlider 中显示值标签?

c++ - 非局部非内联变量的初始化 : does it take place strictly before the `main()` function call?

c++ - 绘制图形的算法

python - QWebEngineView 使用 setHtml(...) 加载 SVG 失败

mysql - Qt Sql 驱动的问题

javascript - 跨 JS 和 C++ 的 Emscripten malloc 和免费

c++ - 如何使用 SFINAE 禁用方法重载集?

c++ - 是否可以更改轴在 qwt 中的位置?