добавить 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
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
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
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.Magst du es? In sozialen Netzwerken teilen!
Kommentare
- sdfsdfkp fgskpgokspdog
- 14. Oktober 2024 15:09
C++ - Тест 004. Указатели, Массивы и Циклы
- Ergebnis:90punkte,
- Bewertungspunkte8
- Максим Васильев
- 2. Oktober 2024 04:14
Qt - Тест 001. Сигналы и слоты
- Ergebnis:68punkte,
- Bewertungspunkte-1
- Лев Семенов
- 30. September 2024 11:04
C++ - Тест 001. Первая программа и типы данных
- Ergebnis:53punkte,
- Bewertungspunkte-4
Давно я не работал с виджетами и с формами, на мой взгляд уже пережитов, и в управлении не очень удобное это все.
Н оя у вас не увидел в коде где вы QCharts растягиваете на область парента.
в функции: "GPlotter::addSeries(QString title, QVector &arr)" я вызываю метод setChart(...), я в конструктор передал адрес на QChartView элемент
А куда собстаенно делся Евгений раз на сайте такой бордак творится?
Я тут. Работы оень много. Отправил его в бан.
Всероссийская служба детского телефона доверия, круглосуточно и анонимно:
Кризисная служба
Поддержка онкологических больных и их близких , круглосуточно:
Горячая линия социально-психологической помощи детям и семьям мигрантов, находящимся в трудной жизненной ситуации:
Курс психологической реабилитации основан на комплексе современных релаксационных и антистрессовых методик 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
Москве);
Участковый отдел
Как правило, психолог для консультации назначается центром исходя из возможностей учреждения 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
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/
+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
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/
Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты 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/