Qwt:缩放轴 - 刻度标签重复自己

时间:2013-11-04 13:11:02

标签: scale precision labels qwt

我正在研究QwtPlot - 我在X轴上有一个常规时间刻度和一个带有离散值的自定义y刻度

问题在于,当我用放大镜缩放离散轴(它只有主要刻度)时,刻度上的刻度开始重复,而不是得到 例如2滴答“0”和“1”我得到4个刻度“0”,“0”,“1”,“1”(或更多,取决于缩放)。因为分频器不能分割值,它只是重复它们。

不知道使用/重新实现什么功能或对象来使刻度停止绘制额外的分区(以及btw还有额外的网格线)。只是因为我希望它能放大更多,所以放大镜放大太多并不是正确的答案。

我对离散y轴(在CPlot继承QwtPlot中)所做的是:

QList<double> ticks;
for(int i=0; i<visualisation->getPIDs().size();i++)
{
    ticks.append(i);
}
QwtScaleDiv* div=new QwtScaleDiv(0,visualisation->getPIDs().size()-1);
div->setTicks(QwtScaleDiv::MajorTick, ticks);
discreteScale=new CDiscreteScaleDraw;
discreteScale->setLUT(visualisation->getPIDs());
setAxisScaleDraw(QwtPlot::yLeft, discreteScale);
setAxisMaxMinor(QwtPlot::yLeft,0);
this->setAxisAutoScale(QwtPlot::yLeft, 0);

PS。在我的时间尺度上,我有一个类似的问题,但这是精确的情况 - 当放大我想得到123,456.789的精度,我得到123,456.78(然后标签加倍,三倍等再次)。我还想删除QwtScaleDraw放在那里的昏迷,以便我得到123456.789,但最重要的是摆脱重复的标签。

1 个答案:

答案 0 :(得分:1)

双倍的重要性超过6而不是无穷无尽,所以不限制放大镜,你迟早会遇到这个问题。

使用QLocale :: toString()及其默认参数值('g',6)完成双字符串转换。如果要使用不同的值,则必须通过实现CDiscreteScaleDraw :: label()来重载。

关于“,”:猜测这是因为您的语言环境的NumberOptions。尝试使用QLocale :: setNumberOptions()更改它们。