График 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
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.Вам це подобається? Поділіться в соціальних мережах!
AD
- Akiv Doros
- 11 листопада 2024 р. 14:58
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:50бали,
- Рейтинг балів-4
m
- molni99
- 26 жовтня 2024 р. 01:37
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:80бали,
- Рейтинг балів4
m
- molni99
- 26 жовтня 2024 р. 01:29
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:20бали,
- Рейтинг балів-10
Останні коментарі
ИМ
Django - Підручник 017. Налаштуйте сторінку входу до Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Игорь Максимов22 листопада 2024 р. 11:51
Evgenii Legotckoi31 жовтня 2024 р. 14:37
Читалка файлів fb3 на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Django - Урок 064. Як написати розширення для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
Игорь Максимов05 жовтня 2024 р. 07:51
QML - Урок 016. База даних SQLite та робота з нею в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Тепер обговоріть на форумі
Evgenii Legotckoi24 червня 2024 р. 15:11
t
google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
tonypeachey115 листопада 2024 р. 06:04
NSProject04 червня 2022 р. 03:49
IscanderChe31 жовтня 2024 р. 15:43
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
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, если вы что-то хотите сделать с переменной переданной внутрь объекта, то и делайте это внутри объекта, а не внутри файла, то есть делайте внутри методов . Абсолютно не ясно в вашем вопросе, в каком конкретно методе или месте кода вы пытаетесь это сделать.
Оказалось передача данных работала, просто построение графика вызывал раньше этой передачи.