我正在研究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,但最重要的是摆脱重复的标签。
答案 0 :(得分:1)
双倍的重要性超过6而不是无穷无尽,所以不限制放大镜,你迟早会遇到这个问题。
使用QLocale :: toString()及其默认参数值('g',6)完成双字符串转换。如果要使用不同的值,则必须通过实现CDiscreteScaleDraw :: label()来重载。
关于“,”:猜测这是因为您的语言环境的NumberOptions。尝试使用QLocale :: setNumberOptions()更改它们。