QWT, метки на шкале прыгают, а надо чтобы плавно выезжали |
Здравствуйте, гость ( Вход | Регистрация )
QWT, метки на шкале прыгают, а надо чтобы плавно выезжали |
quarz |
8.12.2009, 3:28
Сообщение
#1
|
Студент Группа: Участник Сообщений: 49 Регистрация: 3.11.2009 Пользователь №: 1202 Спасибо сказали: 5 раз(а) Репутация: 0 |
Я как обычно, про графики )
Проблема: когда метка появляется справа, она появляется полностью, при этом отодвигая график и ось. Надо чтоб метка плавно выезжала. Я пока нашел 2 [кривых] решения: первое - выравнивать метки по левому краю. Второе - отодвинуть шкалу от правого края QwtScaleWidget::setMinBorderDist. Но ни то, ни другое мне не кажется удобным. Есть идеи? (В аттаче видео с сабжем)
Прикрепленные файлы
|
|
|
quarz |
8.12.2009, 23:35
Сообщение
#2
|
Студент Группа: Участник Сообщений: 49 Регистрация: 3.11.2009 Пользователь №: 1202 Спасибо сказали: 5 раз(а) Репутация: 0 |
Кажется, до меня дошла суть дела =)
Когда метка появляется справа, часть ее находится ЗА пределами виджета, поэтому она искусственно вместе со шкалой и сдвигается. У левых меток такой проблемы нет, потому что левая вертикальная шкала раздвигает layout виджета. Значит, надо как-то раздвинуть layout справа. Доступ к нему есть plot->layout(), но как сделать, чтобы справа от canvas еще было какое-то расстояние? |
|
|
quarz |
9.12.2009, 20:26
Сообщение
#3
|
Студент Группа: Участник Сообщений: 49 Регистрация: 3.11.2009 Пользователь №: 1202 Спасибо сказали: 5 раз(а) Репутация: 0 |
Нашел наиболее красивый и рабочий способ.
Ставим шкалу справа axisEnble(QwtPlot::yRight), устанавливаем для нее свой ScaleDraw, в котором переопределяем методы
чтобы сама шкала не была видна, и управляем шириной этой шкалы через setMinimumExtent. А вот и видео ) На нем видно, как при появлении метки 100, место справа увеличивается, чтобы дать ей залезть на область с осью и не сжимать сам график
Прикрепленные файлы
|
|
|
ctin |
5.2.2012, 15:05
Сообщение
#4
|
Новичок Группа: Новичок Сообщений: 1 Регистрация: 5.2.2012 Пользователь №: 3201 Спасибо сказали: 0 раз(а) Репутация: 0 |
чтоб не прыгало добавляем одну строку:
( указатель на объект класса QwtPlot)->setAxisLabelAlignment(QwtPlot::xBottom, Qt::AlignLeft | Qt::AlignBottom); |
|
|
Текстовая версия | Сейчас: 19.4.2024, 5:33 |