Russian Qt Forum
Ноябрь 02, 2024, 02:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: КАк выравнивать левые края нескольких QwtPlot  (Прочитано 2238 раз)
dqrest
Гость
« : Декабрь 07, 2012, 09:53 »

Привет)у Вот сижу разбираюсь с Qwt(6.0.1).  У меня есть такая вот проблема. Есть 2 qwtplot. Они лежат друг под другом. У первого значения оси У лежат в [0,1], а у второго [100,30000]. Поэтому левые края отрисовок QwtPlot не совпадают. Смотрел пример "plotmatrix", но там слишком большие навороты, поэтому трудно разобраться. Хочется понять саму суть, как их выравнивать.
Записан
dqrest
Гость
« Ответ #1 : Декабрь 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);
}
}
}
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.055 секунд. Запросов: 21.