М
23 ноября 2017 г. 14:46

QCustomPlot Ширина линии.

QCustomPlot

Здравствуйте.

При создании линии:
NGraph=NGraph+1;
ui->customPlot->addGraph(ui->customPlot->xAxis, ui->customPlot->yAxis);  
ui->customPlot->graph(NGraph)->setPen(QPen(Qt::red));
ui->customPlot->graph(NGraph)->setData(bar, Line10);
Не могу задать ширину линии. Пытаюсь ее задать так:
ui->customPlot->graph()->setPen(QPen::setWidth(1));
Скажите пожалуйста, как правильно это делается.

Вам это нравится? Поделитесь в социальных сетях!

8
Evgenii Legotckoi
  • 23 ноября 2017 г. 15:00

Эта строчка никогда не заработает

ui->customPlot->graph()->setPen(QPen::setWidth(1));
У QPen нет статического метода setWidth, а значит и вызывать его через обращение к имени класса без инстанцирования объекта нельзя.
Создаёте объект QPen , установите ему ширину и только потом передавайте готовый объект в метод setPen
    М
    • 23 ноября 2017 г. 15:30

    Спасибо, заработало.

    Но при перестроении графика из лямбда функции, опять проявляется старая ширина. Функции рисования линии одинаковые.
    Вы не знаете в чем может быть дело?

      Evgenii Legotckoi
      • 23 ноября 2017 г. 15:40

      Лямбда - это здесь?

      ui->customPlot->addGraph(ui->customPlot->xAxis, ui->customPlot->yAxis);  
      ui->customPlot->graph(NGraph)->setPen(QPen(Qt::red));
      ui->customPlot->graph(NGraph)->setData(bar, Line10);
      Вы устанавливаете QPen только с указанием цвета, без ширины
      ui->customPlot->graph(NGraph)->setPen(QPen(Qt::red));
      Вообще, проследите везде, где используете метод setPen , и проследите за установкой ширины.
        М
        • 23 ноября 2017 г. 15:45

        лямбда идет дальше

        QObject::connect(ui->customPlot->xAxis,static_cast<void(QCPAxis::*)(const QCPRange&)> (&QCPAxis::rangeChanged), [=]()  //сигнал изменения видимого диапазона
        {
            ui->customPlot->addGraph(ui->customPlot->xAxis, ui->customPlot->yAxis);  //Создает новый график внутри сюжета
            QPen Pen1;
            Pen1.setWidthF(SizeLineBuy);//ширина линии 
            ui->customPlot->graph()->setPen(Pen1);
            ui->customPlot->graph()->setPen(QPen(Qt::green));
            ui->customPlot->graph()->addData(XB1[i],YB1[i]);
            ui->customPlot->graph()->addData(XS1[i],YS1[i]);
        }
        это идет в самом низу лямбды.
          М
          • 23 ноября 2017 г. 16:02

          Поменял задание цвета

          Pen1.setColor(QColor(Qt::red));
          Стало получше. Но почему то при прокрутке округляет на графике ширину до 1, если она меньше.
            Evgenii Legotckoi
            • 23 ноября 2017 г. 16:06

            Дважды инстанцируете объект QPen

            QPen Pen1;
            Pen1.setWidthF(SizeLineBuy);//ширина линии 
            ui->customPlot->graph()->setPen(Pen1); // Установили кисть
            ui->customPlot->graph()->setPen(QPen(Qt::green)); // Пересоздали и переустановили кисть заново с шириной 1
              М
              • 23 ноября 2017 г. 16:25

              Я переделал.

              QPen Pen1;
              Pen1.setColor(QColor(Qt::green));
              Pen1.setWidthF(SizeLineBuy);//ширина линии
              ui->customPlot->graph()->setPen(Pen1);
              Но все равно округляет до 1
                Evgenii Legotckoi
                • 23 ноября 2017 г. 16:36

                Тогда ищите, где ещё происходит установка или обнуление данных, параметров, переустановка QPen

                  Комментарии

                  Только авторизованные пользователи могут публиковать комментарии.
                  Пожалуйста, авторизуйтесь или зарегистрируйтесь
                  • Последние комментарии
                  • Evgenii Legotckoi
                    16 апреля 2025 г. 17:08
                    Благодарю за отзыв. И вам желаю всяческих успехов!
                  • IscanderChe
                    12 апреля 2025 г. 17:12
                    Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
                  • AK
                    1 апреля 2025 г. 11:41
                    Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
                  • Evgenii Legotckoi
                    9 марта 2025 г. 21:02
                    К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
                  • VP
                    9 марта 2025 г. 16:14
                    Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…