М
Nov. 23, 2017, 2:46 p.m.

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));
Скажите пожалуйста, как правильно это делается.
2
The question is asked by the articleQt/C++ - Lesson 030. QCustomPlot – Introduction into working with charts

Do you like it? Share on social networks!

8
Evgenii Legotckoi
  • Nov. 23, 2017, 3 p.m.

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

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

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

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

      Evgenii Legotckoi
      • Nov. 23, 2017, 3:40 p.m.

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

      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 , и проследите за установкой ширины.
        М
        • Nov. 23, 2017, 3:45 p.m.

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

        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]);
        }
        это идет в самом низу лямбды.
          М
          • Nov. 23, 2017, 4:02 p.m.

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

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

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

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

              Я переделал.

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

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

                  Comments

                  Only authorized users can post comments.
                  Please, Log in or Sign up
                  • Last comments
                  • IscanderChe
                    April 12, 2025, 5:12 p.m.
                    Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
                  • AK
                    April 1, 2025, 11:41 a.m.
                    Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
                  • Evgenii Legotckoi
                    March 9, 2025, 9:02 p.m.
                    К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
                  • VP
                    March 9, 2025, 4:14 p.m.
                    Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
                  • ИМ
                    Nov. 22, 2024, 9:51 p.m.
                    Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…