Russian Qt Forum

Qt => Вопросы новичков => Тема начата: dqrest от Декабрь 07, 2012, 09:53



Название: КАк выравнивать левые края нескольких QwtPlot
Отправлено: dqrest от Декабрь 07, 2012, 09:53
Привет)у Вот сижу разбираюсь с Qwt(6.0.1).  У меня есть такая вот проблема. Есть 2 qwtplot. Они лежат друг под другом. У первого значения оси У лежат в [0,1], а у второго [100,30000]. Поэтому левые края отрисовок QwtPlot не совпадают. Смотрел пример "plotmatrix", но там слишком большие навороты, поэтому трудно разобраться. Хочется понять саму суть, как их выравнивать.


Название: Re: КАк выравнивать левые края нескольких QwtPlot
Отправлено: dqrest от Декабрь 07, 2012, 10:55
I have solved this problem without axisTitle. The decision is(I have taken it from "plotmatrix" example)
void PlotMatrix::alignVAxes(int col, int axis)
{
if ( axis != QwtPlot::yLeft && axis != QwtPlot::yRight )
return;

int maxExtent = 0;
for ( int row = 0; row < numRows(); row++ )
{
QwtPlot *p = plot(row, col);
if ( p )
{
QwtScaleWidget *scaleWidget = p->axisWidget(axis);

QwtScaleDraw *sd = scaleWidget->scaleDraw();
sd->setMinimumExtent(0);

const int extent = sd->extent(
QPen(Qt::black, scaleWidget->penWidth()),
scaleWidget->font() );
if ( extent > maxExtent )
maxExtent = extent;
}
}
for ( int row = 0; row < numRows(); row++ )
{
QwtPlot *p = plot(row, col);
if ( p )
{
QwtScaleWidget *scaleWidget = p->axisWidget(axis);
scaleWidget->scaleDraw()->setMinimumExtent(maxExtent);
}
}
}