2013-11-04 28 views
1

我工作的一个QwtPlot - 我有X轴的固定时间尺度,并与离散值QWT:缩放轴 - 滴答标签重复自己

问题自定义Y的比例是,当我m用放大镜缩放离散的轴(它只有主要的刻度),刻度上的刻度开始重复,而不是变成例如 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

双重的意义是超过6但不是无止境的,所以不限制放大镜,你迟早会跑到这个问题上。

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

关于”,“:猜这是因为你的位置的NumberOptions的请尝试使用QLocale :: setNumberOptions()来改变他们

+0

非常感谢你 - 我设法改变了精度上的时间。按我想要的方式缩放(我对QLocale没有任何想法) 但是我仍然遇到了离散比例的问题。请看这个sceenshot: http://tinypic.com/view.php?pic=a452rc&s=5# .UoI_GoZhauY 我不想让所有重复的值和网格如此“密集”......你能否以某种方式阻止添加不必要的主要滴答的规模? – genau