C
Cobra9115101 липня 2020 р. 13:17
Счечик производительности сети
Здравствуйте!
Я хочу создать график для производительности сети. Но график рисуется не так как должен. Мой пример кода:
#ifndef CHART_H #define CHART_H #include <QChart> #include <QTimer> #include <QAbstractAxis> #include <QLineSeries> #include <QValueAxis> #include <QAreaSeries> #include <QDebug> QT_CHARTS_BEGIN_NAMESPACE class QLineSeries; class QValueAxis; QT_CHARTS_END_NAMESPACE QT_CHARTS_USE_NAMESPACE class Chart: public QChart { Q_OBJECT public: Chart(QGraphicsItem *parent = 0, Qt::WindowFlags wFlags = 0); void setLabelsOn(bool isOn); void setPenStyle(QColor color, int width); void setLegendOn(bool isOn); void setAxisGridLineOn(bool isOn); virtual ~Chart(); public slots: void handleTimeout(); private: QTimer m_timer; QLineSeries *m_series; QLineSeries *series1; QValueAxis *m_axisX; QValueAxis *m_axisY; qreal m_x; qreal m_y; QList<double> testList; QAreaSeries *areaSeries; }; #endif /* CHART_H */
#include "chart.h" Chart::Chart(QGraphicsItem *parent, Qt::WindowFlags wFlags): QChart(QChart::ChartTypeCartesian, parent, wFlags), m_series(nullptr), m_x(5), m_y(0) { m_axisX = new QValueAxis(this); m_axisY = new QValueAxis(this); m_series = new QLineSeries(this); m_series->append(m_x, m_y); series1 = new QLineSeries(this); series1->append(1, 1); testList << 93.8436 << 777.797 << 2507.78 << 5999.44 << 6806.54 << 7481.16 << 8008.5 << 1500.5 << 8328.4 << 1998.4 << 9092.04 << 1885.60 << 8093.8 << 8161.83 << 8216.99 << 8280.46 << 8394.55 << 8469.84 << 8500.65 << 2500.88 << 8558.16 << 8660.9 << 8638.87 << 8726.47 << 8715.25 << 8804.48 << 8793.86 << 8839.42 << 8875.75 << 8938.24 << 8977.09 << 9020.27 << 9046.7 << 9092.04 << 9121.58 << 9155.36 << 9199.46 << 10 << 8 << 3 << 1 << 0; areaSeries = new QAreaSeries(m_series, series1); areaSeries->setBrush(QBrush(QColor(Qt::red))); addSeries(areaSeries); setAxisX(m_axisX, m_series); setAxisY(m_axisY, m_series); setAxisX(m_axisX, series1); setAxisY(m_axisY, series1); m_axisX->setTickCount(5); m_axisX->setRange(0, 5); m_axisY->setRange(0, 9199.4); connect(&m_timer, &QTimer::timeout, this, &Chart::handleTimeout); m_timer.setInterval(1000); m_timer.start(); } void Chart::setAxisGridLineOn(bool isOn) { m_axisX->setGridLineVisible(isOn); m_axisY->setGridLineVisible(isOn); } void Chart::setLegendOn(bool isOn) { if (isOn) { legend()->show(); } else { legend()->hide(); } } void Chart::setPenStyle(QColor color, int width) { QPen pen(color); pen.setWidth(width); m_series->setPen(pen); } void Chart::setLabelsOn(bool isOn) { m_axisX->setLabelsVisible(isOn); m_axisY->setLabelsVisible(isOn); } void Chart::handleTimeout() { qreal x = plotArea().width() / m_axisX->tickCount(); qreal y = (m_axisX->max() - m_axisX->min()) / m_axisX->tickCount(); m_x += y; if (!testList.isEmpty()) { m_y = testList.first(); testList.takeFirst(); } else { m_timer.stop(); } qDebug() << "m_x: " << m_x << " " << "m_y: " << m_y; m_series->append(m_x, m_y); series1->append(m_y, 0); scroll(x, 0); } Chart::~Chart() { }
main.cpp:
#include "chart.h" #include <QChartView> #include <QApplication> #include <QWidget> #include <QHBoxLayout> #include <QGraphicsLayout> int main(int argc, char *argv[]) { QApplication a(argc, argv); QWidget window; window.setWindowTitle("Test Chart Widget"); Chart *chart = new Chart; chart->setLabelsOn(true); chart->setPenStyle(Qt::blue, 1); chart->setLegendOn(false); chart->setBackgroundRoundness(1); chart->setAxisGridLineOn(true); //chart->setContentsMargins(-60, -25, -25, -40); chart->layout()->setContentsMargins(0, 0, 0, 0); chart->setAnimationOptions(QChart::AllAnimations); QChartView chartView(chart); chartView.setStyleSheet("border: 1px solid blue;"); chartView.setRenderHint(QPainter::Antialiasing); QHBoxLayout *layout = new QHBoxLayout(); layout->setContentsMargins(QMargins()); layout->addWidget(&chartView); window.setLayout(layout); window.setMinimumSize(810, 400); window.show(); return a.exec(); }
Как можно исправить эту проблему? Спасибо за помощь.
Рекомендуємо хостинг 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,>…
День добрый.
Собственнно говоря, а как он должен рисоваться вы даже и не описали. Никто не знает, чего именно вы хотите от этого графика.
Здравствуйте!
Я хочу сделать что-то такое чтобы мониторить сеть когда загружается файл: https://i.stack.imgur.com/DpKpF.png . Сначала делал по примеру Dynamicspline для того чтобы график двигался: https://doc.qt.io/qt-5/qtcharts-dynamicspline-example.html . Получился такой график: https://ddgobkiprc33d.cloudfront.net/0ad813d3-4182-4c56-b67f-5df9bc2e3b99.png . Чтобы добавить фон, использовал QAreaSeries и график выходит такой: https://evileg.com/media/users/Cobra91151/photos/photo.jpg . Я думаю что расчеты у меня неверны. Спасибо за помощь.
Также проверил через debug режим и увидел эти сообщения: "Can not find series on the chart."
"Can not find series on the chart.". Думаю что это связано с QLineSeries *series1;
Но, пока не могу определить где именно проблема.
Хорошо. После работы сегодня гляну ваш код внимательно.
Здравствуйте!
Я решил проблему используя QtNetworkMonitor пример с GitHub . Вопрос закрыт.