Now I know i would have had to use QwtScaleDiv class for this purpose:
{
QList<double>
&majorTicks
= ticks
[QwtScaleDiv::MajorTick];
foreach (double val, xData)
majorTicks += val;
QList<double>
&mediumTicks
= ticks
[QwtScaleDiv::MediumTick];
for (int i = 0; i < xData.count() - 1; ++i)
mediumTicks
+= QDateTime::fromTime_t(xData
[i
]).
addSecs(900).
toTime_t();
QList<double>
&minorTicks
= ticks
[QwtScaleDiv::MinorTick];
for (int i = 0; i < xData.count() - 1; ++i)
minorTicks
+= QDateTime::fromTime_t(xData
[i
]).
addSecs(300).
toTime_t();
return QwtScaleDiv(xData.
first(), xData.
last(), ticks
);
}
QwtScaleDiv ChartPlot::scaleDiv()
{
QList<double> ticks[QwtScaleDiv::NTickTypes];
QList<double> &majorTicks = ticks[QwtScaleDiv::MajorTick];
foreach (double val, xData)
majorTicks += val;
QList<double> &mediumTicks = ticks[QwtScaleDiv::MediumTick];
for (int i = 0; i < xData.count() - 1; ++i)
mediumTicks += QDateTime::fromTime_t(xData[i]).addSecs(900).toTime_t();
QList<double> &minorTicks = ticks[QwtScaleDiv::MinorTick];
for (int i = 0; i < xData.count() - 1; ++i)
minorTicks += QDateTime::fromTime_t(xData[i]).addSecs(300).toTime_t();
return QwtScaleDiv(xData.first(), xData.last(), ticks);
}
To copy to clipboard, switch view to plain text mode
Simply call this function to set axis scale divisions in your QwtPlot instance as following:
setAxisScaleDiv
(QwtPlot::xBottom, scaleDiv
());
setAxisScaleDiv(QwtPlot::xBottom, scaleDiv());
To copy to clipboard, switch view to plain text mode
The only problem now I have is to set one minor tick to 1/10 of major tick and one medium tick to 1/5 of major tick. Thanks for suggestions in advance!
Bookmarks