G
George134. Mai 2024 16:13

добавить qlineseries в функции

qlineseries

Всем доброго времени суток!
Товарищи, помогите, юному падавану обуздать QChart, уже неделю пытаюсь сам решить проблему, в интернете подходящих статей не нашел:)

Проблема в следующем:
Хочу иметь собственный, пользовательский класс для создания графиков QChart. Идея заключается в том, чтобы в класс через функцию, можно было добавлять данные, а они уже автоматически будут строиться
мой код

профайлер
QT += core gui charts

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11

!!!DEFINES += QT_DEPRECATED_WARNINGS

You can make your code fail to compile if it uses deprecated APIs.

In order to do so, uncomment the following line.

DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
GrarhPlotter.cpp \
callout.cpp \
main.cpp \
mainwindow.cpp

HEADERS += \
GraphPlotter.h \
callout.h \
mainwindow.h

FORMS += \
mainwindow.ui

Default rules for deployment.

qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

mainwindow.h

ifndef MAINWINDOW_H

define MAINWINDOW_H

include

include

include

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();

private:
Ui::MainWindow *ui;
};

endif // MAINWINDOW_H

mainwindow.cpp

include "mainwindow.h"

include "ui_mainwindow.h"

include "GraphPlotter.h"

//#include

MainWindow::MainWindow(QWidget parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
// GPlotter gplotter(ui->view);
GPlotter
gplotter = new GPlotter(ui->view);

QVector<double> arr1{6, 7, 8, 9, 10};
QVector<double> arr2{5, 4, 3, 2, 1};

// int idOne = gplotter.addSeries("plot1", arr1);
int idOne = gplotter->addSeries("plot1", arr1);
// int idOne = gplotter->addSeries("plot1", arr1);
// int idTwo = gplotter.addSeries("plot2", arr2);

// QLineSeries oneSeries = gplotter.takeSeries(idOne);
// QLineSeries
twoSeries = gplotter.takeSeries(idTwo);

// oneSeries->append(QPointF(5, 100));
// twoSeries->insert(0, QPointF(1, 50));
// gplotter.update();
}

MainWindow::~MainWindow()
{
delete ui;
}

мой пользовательский класс: GPlotter
GraphPlotter.h

ifndef GRAPHPLOTTER_H

define GRAPHPLOTTER_H

include

include

include

include

include

include

include "callout.h"

//namespace Ui {
//class GPlotter;
//}

//namespace Ui {
//class MainWindow;
//}

QT_CHARTS_USE_NAMESPACE

class GPlotter : public QChartView
{
Q_OBJECT

public:

explicit GPlotter(QWidget *parent = nullptr);
~GPlotter();

int addSeries(QString title, QVector <double> &arr);
QLineSeries* takeSeries(int key);
void setConf(QString param);
void clearChart(QString title);
void update(void);

// QLineSeries series;
QChart
chart;
QString title;
QMap map;

void saveAxisRange();

private:
//Ui::MainWindow *ui;

QPoint m_lastPoint;
bool m_isPress;
bool m_ctrlPress;
bool m_alreadySaveRange;
double m_xMin, m_xMax, m_yMin, m_yMax;
QGraphicsSimpleTextItem* m_coordItem;

protected:
void mousePressEvent(QMouseEvent *event);

public slots:
};

endif // GRAPHPLOTTER_H

GrarhPlotter.cpp

include "GraphPlotter.h"

include

//#include
//#include

include "ui_mainwindow.h"

GPlotter::GPlotter(QWidget *parent) :
QChartView(parent)
//QWidget (view),
//ui(new Ui::MainWindow)
{

chart = new QChart();

// QChartView view = new QChartView(chart);
// QChartView
view = new QChartView(parent);
// view->setParent(parent);
// view->setChart(chart);

// view->setMouseTracking(true);
// setChart(chart);
setMouseTracking(true);
// QLineSeries series = new QLineSeries();
// series = new QLineSeries();
//
series << QPointF(1, 1);
// series << QPointF(2, 2);
//
series << QPointF(3, 3);
// series << QPointF(4, 4);
//
series << QPointF(5, 5);
// chart->addSeries(series);
// chart->createDefaultAxes();
}

int GPlotter::addSeries(QString title, QVector &arr){

QLineSeries *series = new QLineSeries();
series->setName(title);

//chart = new QChart();
QValueAxis *axisX = new QValueAxis();
chart->addAxis(axisX, Qt::AlignBottom);


QValueAxis *axisY = new QValueAxis();
chart->addAxis(axisY, Qt::AlignLeft);

// this->setChart(chart);

for(int i = 0; i < arr.count(); i++)

// series->append(QPointF(i, arr.at(i)));
*series << QPointF(i, arr.at(i));

map.insert(map.count(), series);
//qDebug() << map;
//chart->legend()->hide();
//chart->setTitle(title);


chart->addSeries(series);
series->attachAxis(axisX);
series->attachAxis(axisY);

// chart->createDefaultAxes();
// series->attachAxis(chart->axisX());
// series->attachAxis(chart->axisY());

setChart(chart);
return map.firstKey();

}

QLineSeries GPlotter::takeSeries(int key){
QLineSeries
ans;
ans = map[key];
return ans;
}

void GPlotter::update(void){

for(int i = 0; i < map.count(); i++){
    chart->removeSeries(map[i]);
    chart->addSeries(map[i]);
}
chart->createDefaultAxes();

}

void GPlotter::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
{
m_lastPoint = event->pos();
m_isPress = true;
}
}

GPlotter::~GPlotter()
{
//chart->removeAllSeries();
//delete chart;
}

На выходе получаю это:

1) Не понимаю почему изображение не "натягивается" на весь chart
2) после chart->createDefaultAxes(); не могу подключить ось series->attachAxis(chart->axisY()) ( для X соответственно тоже самое)

Спасибо за внимание!

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.

Magst du es? In sozialen Netzwerken teilen!

12
BlinCT
  • 5. Mai 2024 05:44

Давно я не работал с виджетами и с формами, на мой взгляд уже пережитов, и в управлении не очень удобное это все.
Н оя у вас не увидел в коде где вы QCharts растягиваете на область парента.

    G
    • 7. Mai 2024 00:27

    в функции: "GPlotter::addSeries(QString title, QVector &arr)" я вызываю метод setChart(...), я в конструктор передал адрес на QChartView элемент

      NSProject
      • 23. Juni 2024 13:48

      А куда собстаенно делся Евгений раз на сайте такой бордак творится?

        Evgenii Legotckoi
        • 24. Juni 2024 15:11

        Я тут. Работы оень много. Отправил его в бан.

          C
          • 28. September 2024 13:59

          Всероссийская служба детского телефона доверия, круглосуточно и анонимно:
          Кризисная служба
          Поддержка онкологических больных и их близких , круглосуточно:
          Горячая линия социально-психологической помощи детям и семьям мигрантов, находящимся в трудной жизненной ситуации:
          Курс психологической реабилитации основан на комплексе современных релаксационных и антистрессовых методик https://mypsyhealth.ru/психология/2021/03/30/ssory-s-partnerom
          Они помогают восстановить психологическое и физиологическое здоровье, справиться с тревогой и страхами, улучшить душевное состояние и нормализовать сон https://mypsyhealth.ru/services/psikhiatricheskaya-klinika
          Реабилитация будет полезна людям с тревожными и депрессивными состояниями, синдромом хронической усталости и эмоционального выгорания https://mypsyhealth.ru/specialists/psychotherapist/
          Так, в зависимости от состояния пациента специалисты могут применять цвето- и светотерапию, музыкотерапию, элементы арт-терапии (терапия, основанная на изобразительной деятельности) https://mypsyhealth.ru/психиатрия/2022/12/10/depression-is-not-my-choice
          Записаться на курс психологической реабилитации можно как самостоятельно по телефону: +7 (499) 173-09-09, так и по направлению психолога после консультации https://mypsyhealth.ru/shop/categories/liver-support
          Программа, длительность и регулярность процедур подбираются специалистами службы индивидуально https://mypsyhealth.ru/психотерапия/2019/03/21/strahi

          б) жителям Московской области и другим гражданам Российской Фе­дерации, имеющим постоянное место работы в Москве (подтверждается предъявлением паспорта и справки с места работы на фирменном бланке предприятия, с указанием юридического адреса в г https://mypsyhealth.ru/психиатрия/2022/03/15/male-depression
          Москве);

            C
            • 2. Oktober 2024 03:15

            Участковый отдел
            Как правило, психолог для консультации назначается центром исходя из возможностей учреждения https://mypsyhealth.ru/психотерапия/2019/03/21/stress-v-silnoj-forme

            Центр ментального здоровья изначально задумывался как центр психологической поддержки для людей с разными проблемами и запросами https://mypsyhealth.ru/blog/page24/
            Мы помогаем всем, кому нужна психологическая помощь https://mypsyhealth.ru/психология/2019/04/20/strah-vystuplenij

            Зеленоградский административный округ https://mypsyhealth.ru/наркология/2021/07/05/6steps-for-quitsmoking

            Если вы не справляетесь с тревогой из?за сложившейся ситуации, стоит обратиться к психологу https://mypsyhealth.ru/blog/page51/
            Но мы понимаем, что такая возможность есть не всегда https://mypsyhealth.ru/blog/page38/
            Вот девять организаций, которые оказывают психологическую помощь бесплатно https://mypsyhealth.ru/наркология/2021/01/31/zapoj-vyvedenie

            +7 (863) 267-93-04 +7 (863) 223-41-41 https://mypsyhealth.ru/психиатрия/2019/03/21/lunatizm

              K
              • 2. Oktober 2024 03:54

              200 метров от моря https://seven-elephants.com/en/tours/

              Тип: Квартира Операция: Купить Сегмент рынка: Первичный Квадратура : 50 https://seven-elephants.com/reviews/nikolay-i-elena/
              0м 2 Кол-во спален : Студия Номер: s-gu-13 https://seven-elephants.com/categories/villas/

              Intermark Global https://seven-elephants.com/en/reviews/sergey-i-natalya/

              ВНЖ при покупке Онлайн-показ Удалённая сделка https://seven-elephants.com/en/reviews/oksana-evgenij-gordej-i-evdokiya-kazakhstan/

              Это результативно https://seven-elephants.com/reviews/nikolay-e/

              Владимир Васильевич Кудрявцев https://seven-elephants.com/category/reviews/page/9/

                C
                • 3. Oktober 2024 01:15

                +7 (3812) 56-56-65 — городской телефон 052-83 — МТС 670 — Tele2 +7 (923) 699-30-03 — Мегафон 07-045 — Билайн https://mypsyhealth.ru/терапия/2022/04/27/blood-pressure

                14 https://mypsyhealth.ru/shop/categories/zheludochno-kishechnyi-trakt
                ГБУ МСППН гарантирует конфиденциальность персональных дан­ных клиента и информации, полученной в процессе оказания психологиче­ской помощи** https://mypsyhealth.ru/психология/2024/01/12/7-Important-Tips-for-Teens

                Российский Красный Крест, сервис по оказанию бесплатной психологической поддержки в рамках общероссийской акции взаимопомощи #МыВместе:
                +7 (800) 700-06-00 https://mypsyhealth.ru/психотерапия/2019/03/21/panicheskie-ataki

                +7 (800) 100-21-15 https://mypsyhealth.ru/психиатрия/2022/07/29/day-for-alzheimer's

                Список служб, оказывающих экстренную психологическую помощь:

                  Pressure cleaning is an effective method for reduce damage to building exteriors. By decreasing the wear and wear resulting from mildew, mildew, and dust accumulation, commercial building facades are kept in excellent condition. Consistent power washing removes contaminants that can result in structural damage and ruin building materials. This proactive step maintains the integrity and integrity of the building, reducing the necessity for expensive fixes and replacements. Furthermore, a tidy exterior improves the overall image of the property, making it to be more appealing to visitors and visitors. By utilizing power washing, business owners may safeguard their buildings and guarantee they remain in optimal state. If you're curious, feel free to check out my home and business high-pressure washing webpage to learn more.

                  [url=https://calipressurewashing.net/folsom-ca-residential-commercial-pressure-washing/]Commercials Fleet Pressure Washing in Windsor for property managers[/url]

                  [url=https://www.lightknotes.com/MyBB/showthread.php?tid=121010]Keeping Neat Common Areas in Retail Complexes[/url] 094c052

                    Creating a healthier and healthier atmosphere is crucial for factories and factories. High-pressure washing can help remove contaminants, dust, and impurities that gather on floors, making sure a cleaner area for workers. Frequent power washing of floors reduces the chance of injuries and safety problems resulting from contact to dangerous materials. A well-maintained work environment also boosts staff happiness and productivity, as staff are more likely to care in a clean environment. Furthermore, pressure cleaning helps avoid the buildup of grease and oil, which may be fire risks. By utilizing power washing, warehouse operators ensure a healthier and more efficient working environment. If you're curious, feel free to check out my residential and commercial pressure cleaning services website to learn more.

                    [url=https://calipressurewashing.net/contact-us/page/6/?et_blog]Garbage area Steam Cleaning in San Leandro for Ambulance companies[/url]

                    [url=http://www.wcgmcn.com/forum.php?mod=viewthread&tid=43&pid=6453&page=20&extra=#pid6453]Extending the Longevity of Industrial Roofs[/url] 6c6f094

                      K
                      • 13. Oktober 2024 09:24

                      North Symbol by Bubnov Ltd https://seven-elephants.com/en/categories/penthouse/

                      Искеле – жемчужина острова! Все факторы говорят про большой инвестиционный потенциал данного района как для долгосрочных инвестиции, так и для покупки готового жилья в одном из самых туристических районах Северного Кипра https://seven-elephants.com/reviews/oksana-iz-astany/
                      Двухкомнатная квартира 65 м? + 8м? терраса в СПА-комплексе в 600 метрах от песчаного пляжа https://seven-elephants.com/reviews/stanislav-i-alena/
                      Квартира в шикарном комплексе https://seven-elephants.com/en/properties/page/3/

                      Прямо на сайте клиенты могут ознакомиться с детальным описанием и фотографиями объектов, узнать цены в рублях и другой валюте, а при возникновении вопросов или необходимости уточнить дополнительную информацию связаться с нашими консультантами наиболее удобным способом https://seven-elephants.com/en/agents/sales-manager/

                      В 600 метрах от песчаного пляжа В 5 минутах езды от лучших 5-звездочных отелей Артемис и Ноев Ковчег, где вы найдете все, что нужно для комфортного отдыха, начиная от прекрасного песчаного пляжа и аквапарка и заканчивая ресторанами, СПА и казино В 5 минутах езды до гавани Боаз В 5 минутах езды до руин античного города Саламиса В 10 минутах от Фамагусты В 30 минутах езды до гавани Karpaz Gate Marina В 30 минутах езды от аэропорта Эрджан В 45 минутах езды от аэропорта Ларнака https://seven-elephants.com/reviews/karlygash-i-maksutbek-iz-astany/

                      Уютные квартиры-студии , Недорогие апартаменты , Пентхаусы, Бунгало, Дуплексы и коттеджи; Роскошные особняки и виллы на побережье https://seven-elephants.com/en/reviews/otzyv-zhanary-iz-kazakhstana/

                      Полная меблировка https://seven-elephants.com/en/reviews/andrey-n/
                      Рядом со школой https://seven-elephants.com/properties/blue/

                        J
                        • 17. Oktober 2024 03:27

                        Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru/2023/03/29/podstavki-pod-shokolad/ В данном документе будут отражены любые изменения политики обработки персональных данных Оператором https://topdecorpro.ru/kontakty/ Политика действует бессрочно до замены ее новой версией https://topdecorpro.ru/2023/01/12/1639/ Актуальная версия Политики в свободном доступе расположена в сети Интернет по адресу http://maxmukhaev https://topdecorpro.ru/2021/12/10/fotozona/ com/contacts https://topdecorpro.ru/skulptury-art-obekty-instalyacii/interery/
                        Бюст https://topdecorpro.ru/2021/08/28/novye-proekty/
                        На начальном этапе возможна отрисовка скульптуры, памятной доски и других форм в 3D https://topdecorpro.ru/category/novosti/ Специалисты гранитной мастерской «Каменная слеза» устанавливают изделие в Москве и Московской области https://topdecorpro.ru/2021/08/28/novye-proekty/
                        В нашем мире все удивительно https://topdecorpro.ru/author/admin2/ Особенно интересны метаморфозы, происходящие вокруг нас https://topdecorpro.ru/2021/09/25/stendy-dlya-vystavki/ Возьмем обычный пенопласт https://topdecorpro.ru/category/bez-rubriki/ Казалось бы,
                        Городская скульптура https://topdecorpro.ru/2023/07/13/fotozona-2/
                        Скульптурная композиция "Дымковская игрушка" изготовлена на заказ из бронзы https://topdecorpro.ru/2023/08/08/shou-cheburashki/ Скульптура установлена в Кирове возле театра кукол https://topdecorpro.ru/author/admin2/page/3/ Такой необычный и большой подарок сделала горожанам компания "Мегафон", а наш цех изготовил скульптуру https://topdecorpro.ru/2023/08/08/shou-cheburashki/

                          Kommentare

                          Nur autorisierte Benutzer können Kommentare posten.
                          Bitte Anmelden oder Registrieren
                          Letzte Kommentare
                          ИМ
                          Игорь Максимов5. Oktober 2024 07:51
                          Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
                          d
                          dblas55. Juli 2024 11:02
                          QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                          k
                          kmssr8. Februar 2024 18:43
                          Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
                          Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
                          EVA
                          EVA25. Dezember 2023 10:30
                          Boost - statisches Verknüpfen im CMake-Projekt unter Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
                          Jetzt im Forum diskutieren
                          J
                          JacobFib17. Oktober 2024 03:27
                          добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
                          JW
                          Jhon Wick1. Oktober 2024 15:52
                          Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
                          КГ
                          Кирилл Гусарев27. September 2024 09:09
                          Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
                          F
                          Fynjy22. Juli 2024 04:15
                          при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

                          Folgen Sie uns in sozialen Netzwerken