C
Cobra91151July 1, 2020, 1:17 p.m.
Счечик производительности сети
Здравствуйте!
Я хочу создать график для производительности сети. Но график рисуется не так как должен. Мой пример кода:
#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(); }
Как можно исправить эту проблему? Спасибо за помощь.
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.Do you like it? Share on social networks!
AD
- Akiv Doros
- Nov. 12, 2024, 1:58 a.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:50points,
- Rating points-4
m
- molni99
- Oct. 26, 2024, 11:37 a.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:80points,
- Rating points4
m
- molni99
- Oct. 26, 2024, 11:29 a.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:20points,
- Rating points-10
Last comments
ИМ
Django - Tutorial 017. Customize the login page to Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Игорь МаксимовNov. 22, 2024, 10:51 p.m.
Evgenii LegotckoiNov. 1, 2024, 12:37 a.m.
Fb3 file reader on Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Django - Lesson 064. How to write a Python Markdown extension Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
Игорь МаксимовOct. 5, 2024, 5:51 p.m.
QML - Lesson 016. SQLite database and the working with it in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Now discuss on the forum
Evgenii LegotckoiJune 25, 2024, 1:11 a.m.
t
google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
tonypeachey1Nov. 15, 2024, 5:04 p.m.
NSProjectJune 4, 2022, 1:49 p.m.
IscanderCheNov. 1, 2024, 1:43 a.m.
Машина тьюринга // Начальное состояние 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 . Вопрос закрыт.