没有绘制QWT绘图轴

时间:2012-08-08 20:38:17

标签: c++ qt qwt

我正在尝试使用没有任何标题或轴标签的QWT绘制图表。不绘制标题似乎很容易,你所要做的就是不将它传递给标题,或者如果已经存在标题,只需给它一个空字符串(如下所示):

ui->plot->setAxisTitle(QwtPlot::xBottom, "");
ui->plot->setAxisTitle(QwtPlot::yLeft, "");

但是默认情况下会绘制实际标签(在axisScale属性内)(在x和y中都从0到1000)。然而,即使我可以改变它的外观,我也无法完全删除它。

那么有没有办法在没有任何轴标签或标题的情况下绘制qwt图?

3 个答案:

答案 0 :(得分:3)

如果你不想要比例尺或标签,这将有效:

ui->plot->enableAxis(QwtPlot::xBottom, false);
ui->plot->enableAxis(QwtPlot::yLeft, false);

如果要显示没有标签的比例,您可以实现自己的QwtScaleDraw对象,该对象为所有标签返回空的QwtText对象:

class MyScaleDraw : public QwtScaleDraw
{
public:
    MyScaleDraw() : QwtScaleDraw() { }
    virtual ~MyScaleDraw() { }
    virtual QwtText label(double) const
    {
        return QwtText();
    }
};

//...

ui->plot->setAxisScaleDraw(Qwt::xBottom, new MyScaleDraw);
ui->plot->setAxisScaleDraw(Qwt::yLeft, new MyScaleDraw);

可能有更好的方法,但这是我能想到的。

答案 1 :(得分:1)

我做了以下事情: ui-> plot-> enableAxis(QwtPlot :: yLeft,false);

但发生的事情是我的轴消失了,但我的情节也被压成了一个薄的水平条。

是什么导致这种情况?

答案 2 :(得分:0)

刚刚找到了一个很好的方法:

ui->plot->axisScaleDraw(QwtPlot::xBottom)->enableComponent(QwtAbstractScaleDraw::ScaleComponent::Labels, false);

也适用于ScaleComponents Ticks和Backbone。