График qcustomplot, перенос данных из файла в файл, особенности графика и массивов.
Здравствуйте.
1. Как из main.cpp передать массив и переменную в mainwindow.cpp ?
2. После того, как задаю массив QVector<double > Open1[8]; , не могу присвоить Open1[0]=18; Open1[1]=22; Open1[2]=16; Open1[3]=20; Open1[4]=18; Open1[5]=22; Open1[6]=16; Open1[7]=20; , если же задаю массив double Open1[8]; , то не могу использовать его в функции timeSeriesToOhlc . Скажите пожалуйста, как работать с массивом QVector<double >.
3. Как я понял double binSize = 3600*2 регулирует сколько значений цены отражается на свече графика, как сделать так, чтобы на одной свече отражалось только 4 цены? Можно ли вводить цены не одним массивом, а четырьмя? Если нельзя, то как лучше преобразовывать 4 массива в 1 для корректной работы.
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.Magst du es? In sozialen Netzwerken teilen!
Kommentare
sf
- 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
Letzte Kommentare
Fb3-Dateileser auf Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
Игорь Максимов5. Oktober 2024 07:51
QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Анатолий Кононенко5. Februar 2024 01:50
Jetzt im Forum diskutieren
добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
ИМ
Реализация навигации по разделам Спасибо Евгений!
Игорь Максимов3. Oktober 2024 04:05
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…
КГ
Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
Кирилл Гусарев27. September 2024 09:09
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …
4. Можно ли этот график строить по номерам свечек, и уже к ним присваивать дату?
1. Создайте метод для установки переменных или того же самого вектора в класс MainWindow.
4. А зачем? Обычно по датам строят, а свечки как бы привязаны к индексу в векторе в каком-то смысле.
3.4. решил так //candlesticks->data()->set(QCPFinancial::timeSeriesToOhlc(time, Open, binSize, startTime)); //ввод значений графика
Осталось понять как сделать счетчик графика объемов не по дате, а по номеруС графиком объемов решилось также. Помогите пожалуйста с вопросами 1 и 2.
1. Чтобы что-то передать, установить, добавить в класс можно воспользоваться добавлением метода, я уже показывал пример кода, просто напишите метод с соответствующей сигнатурой и реализацией.
Выдает ошибку undefined reference to `MainWindow::setSomeVariable(long long)' , скажите пожалуйста как это исправить и передать переменную n1 из mainw.cpp в mainwindow.cpp
1. Вы написали реализацию этого setSomeVariable метода? В файле mainwindow.cpp?
1. Нет, не знаю как написать. Объясните пожалуйста, этот момент плохо понимаю.
1. Вам бы сначала базовые знания подтянуть по программированию на C++, а потом уже графиками заниматься. А то это минимальные основы, без которых нельзя заниматься программированием, а Вы сразу за подключение сторонней библиотеки в фрейморвке взялись, да ещё и колупаете пример с графиками японских свечей, которые используются-то только в биржевых терминалах. Почитайте статьи из раздела по C++ . А также какую-нибудь учебную литературу таких авторов как Прата, Лафоре, Страуструп.
Что касается конкретно вышего вопроса, то посмотрите в mainwindow.cpp и mainwindow.h метод makePlot().
Там не через количество свечек указывается, а через масштабирование по осям. Через метод scaleRange. Можно посчитать максимальный и минимальный диапазоны и отталкиваться от них.
7. Может быть поможет:
1. Если Вам нужно передать в объект класса некоторую информацию и хранить её там, то нужно объявить переменную в объявлении этого класса, посмотрите в этой статье, как формируется класс в С++ .
Поэтому вот в этой статье есть пример наследования и переопределения метода mousePressEvent для QGraphicsItem . Делается аналогично и для wheelEvent, который сообщает о прокрутке колёсика мыши. Как только срабатывает wheelEvent, тогда и нужно делать перемасштабирование и перерисовку.
Спасибо прочел классы. Но вопросы остались примерно теми же.
И еще загвоздка в том, что не совсем понятно взаимодействие классов и методов qcustomplot.
Как бы Вам объяснить.... внутри класса MainWindow, который объявлен в файле mainwindow.cpp, поэтому внутри методов класса MainWindow можно вызывать сразу метод... Вот как там вызывается метод makePlot(); , также можно вызывать любые методы..., только смысла нет в вызове метода через указание имени класса. Метод же не статический...
Переопределение метода не равно его вызову... Я вам кидал ссылку на статью по работе с QGrapihcsItem, где есть наследование и переопределение методов. Вам необходимо наследоваться от класса QCustomPlot и переопределить метод wheelEvent.
Я Вас не совсем понимаю. Я метод прописал в mainwindow.h. Мог этот метод прописать и в другом файле. Но это не влияет на его работоспособность, а как я понял так делают тля улучшения читаемости кода. Вы сначала предложили объекту w присвоить передаваемое значение. Оно у него есть. Но как к нему обратиться из другого файла?
Также не помогает прописывать extern MainWindow w ; в других файлах.
Напишите метод геттер для получения этого значения. значение возвращается через оператор return. Естественно с объявлением и реализацией для класса MainWindow.
Чтобы обратиться к какому либо объекту в другом месте кода, то есть в другом классе, нужно иметь инстанс этого класса, ссылку на него или указатель.
Но ведь метод wheelEvent принадлежит классу QCustomPlot
http://www.qcustomplot.com/documentation/classQCustomPlot.html#a7b8bd7e8d3a1d23a8595e9c6a6b76ef1
И что Вы этим хотели сказать? Я знаю что он принадлежит этому методу.
я описал гет функцию. но как вернуть значение w в другом файле? как обратиться к w?
Да с чего вы решили, что он должен работать так, как вы этого хотите? Он всего лишь делает скролинг, и в него передаётся поворот колёсика мыши. Данный метод вызывается автоматически в стеке вызовов событий виджетов Qt, обычно эти методы вообще никогда не вызывают принудительно. Они вызываются сами. Это методы событий, которые отслеживаются приложением Qt. Поэтому эти методы переопределяют, чтобы добавить специальноен помедение. В вашем случае отслеживание находящихся на графике свечек для автоматического ресайза по вертикали.
в main.cpp все работает :
Наверное потому, что у вас нет этой ссылки в mainwindow.cpp. Всё правильно говорит. И extern тут не поможет. не пробовали вызывать метод без w. ?
если делать так n1=getCandleDate (); то вылетает проект. Если делать #include "main.cpp", тоже выдает ошибки.Скажите пожалуйста, как же сделать ссылку на w?
n1=getCandleDate(); - в каком месте кода вы это применяете?
Ну и что это значит? Вызываете метод класса MainWindow в файле mainwindow.cpp за пределами класса MainWindow.
При этом думаете, что если увязать файлы через какой-нибудь extern с ссылкой на объект MainWindow , то всё должно видеться?
В том то и беда что в учебниках таких примеров не нашел, потому и спрашиваю вас. Но вы к сожалению так и не сказали рабочего варианта((
Проблема не в том, что я не написал вам рабочего варианта, а в том, что Вы не понимаете самых минимальных основ, которые есть во всех учебниках. Так что не перекладывайте свои проблемы с обучением на меня.
Даже в тех 11 статьях которые есть на сайте уже есть примеры с методами, областями видимости и перечислениями. Также есть тесты. Я предлагал Вам довольно прозрачные и разжёванные статьи. Возможно, программирование просто не про Вас.
Согласен, программирование не для меня, но приходиться заниматься и этим.
Нет у вас никакого чёткого вопроса. Вы говорите, что сделали объект в файле main.cpp в функции main, и пытаетсь обратиться к этом объекту в файле mainwindow.cpp. Но класс этого объекта описан в этом самом файле mainwindow.cpp, если вы что-то хотите сделать с переменной переданной внутрь объекта, то и делайте это внутри объекта, а не внутри файла, то есть делайте внутри методов . Абсолютно не ясно в вашем вопросе, в каком конкретно методе или месте кода вы пытаетесь это сделать.
Оказалось передача данных работала, просто построение графика вызывал раньше этой передачи.