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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QwtLegend как добавить item ?  (Прочитано 7521 раз)
Ubuntu_linux
Гость
« : Декабрь 17, 2010, 18:50 »

Использую QwtLegend и хочу добавить туда QwtLegendItem, но не знаю как.Непонимающий
Записан
alexman
Гость
« Ответ #1 : Декабрь 17, 2010, 23:00 »

QwtLegend для  QwtPlot используете?
Записан
Ubuntu_linux
Гость
« Ответ #2 : Декабрь 18, 2010, 02:54 »

Да.Что то не могу найти как ето сделать.
Записан
alexman
Гость
« Ответ #3 : Декабрь 18, 2010, 10:05 »

Код:
QwtLegend* legend = new QwtLegend( plot ); //QwtPlot* plot...
plot->insertLegend( legend, QwtPlot::BottomLegend );
Ну а далее при добавлении элементов на карту указывайте в конструкторе текст - это и есть легенда.
Записан
Ubuntu_linux
Гость
« Ответ #4 : Декабрь 20, 2010, 23:16 »

А как изменить количество знаков после запятой (1.23566 на 1.23 ) в подписи делений под осями Непонимающий
Записан
alexman
Гость
« Ответ #5 : Декабрь 20, 2010, 23:35 »

Наследуешься от QwtScaleDraw и переопределяешь метод QwtText label( double value ) const [virtual].
Записан
Ubuntu_linux
Гость
« Ответ #6 : Декабрь 21, 2010, 00:08 »

Ок, а как написать формулу E=m*c^2 в легенде?
Делаю так
 
Код
C++ (Qt)
QwtText text("E=m*c^2",QwtText::TeXText);
Но нет ефекта... Грустный
Записан
Ubuntu_linux
Гость
« Ответ #7 : Декабрь 21, 2010, 01:33 »

Наследуешься от QwtScaleDraw и переопределяешь метод QwtText label( double value ) const [virtual].

Не выходит. Грустный Грустный
Записан
alexman
Гость
« Ответ #8 : Декабрь 21, 2010, 08:46 »

Наследуешься от QwtScaleDraw и переопределяешь метод QwtText label( double value ) const [virtual].

Не выходит. Грустный Грустный
Код покажи?
Записан
Ubuntu_linux
Гость
« Ответ #9 : Декабрь 21, 2010, 13:05 »

Наследуешься от QwtScaleDraw и переопределяешь метод QwtText label( double value ) const [virtual].

Не выходит. Грустный Грустный
Код покажи?
Код
C++ (Qt)
QwtText QwtAbstractScaleDraw::label(double a) const {
 
    QString str;
    str.setNum(a);
    return str.left(str.indexOf(".")+2);
}//

Так получается, но для всех осей, а как сделать  для каждой оси по отдельности, чтоб устанавливать нужную точность ?
Записан
alexman
Гость
« Ответ #10 : Декабрь 21, 2010, 13:26 »

1. Зачем QwtAbstractScaleDraw?
2. void QwtPlot::setAxisScaleDraw(   int axisId, QwtScaleDraw* scaleDraw ) - устанавливает drawer для оси axisId.

А вообще лучше читать доку, да и исходники вполне доступно написаны!
Записан
Ubuntu_linux
Гость
« Ответ #11 : Декабрь 21, 2010, 13:56 »

Но в QwtScaleDraw нет функции чтоб установить количество знаков после запятой в подписи axis. Непонимающий
Записан
alexman
Гость
« Ответ #12 : Декабрь 21, 2010, 16:13 »

Но в QwtScaleDraw нет функции чтоб установить количество знаков после запятой в подписи axis. Непонимающий

Так уже писал:
Наследуешься от QwtScaleDraw и переопределяешь метод QwtText label( double value ) const [virtual].

Непонятно, что такое наследование?
Записан
Ubuntu_linux
Гость
« Ответ #13 : Декабрь 22, 2010, 00:41 »

Но в QwtScaleDraw нет функции чтоб установить количество знаков после запятой в подписи axis. Непонимающий

Так уже писал:
Наследуешься от QwtScaleDraw и переопределяешь метод QwtText label( double value ) const [virtual].

Непонятно, что такое наследование?
Ну ето не совсем         тривиально для такой задачи.
Записан
alexman
Гость
« Ответ #14 : Декабрь 22, 2010, 09:45 »

Да ладно Непонимающий Наоборот, наследование обеспечивает гибкость:
Код:
class ScaleDraw : public QwtScaleDraw
{
public:
ScaleDraw() :  QwtScaleDraw() {}
~ScaleDraw() {}

QwtText label( double value ) const
{
return QString( "%1" ).arg( value, 0, 'f', 2 );
}
};
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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