Qt中在widget内显示折线图和柱状图

简介: Qt中在widget内显示折线图和柱状图
    QObject::connect(ui.radioButton, &QRadioButton::toggled, [&]() {
        if (!ui.radioButton->isChecked()) {
            QStringList dataList;
            for (int i = 0; i < 30; i++)
            {
                int k = rand() % 10;
                dataList.append(QString::number(k));
            }
            QChart* m_chart;
            QLineSeries* lineSeries = new QLineSeries();
            QChartView* chartView = new QChartView(this);
            for (quint8 i = 0; i < dataList.length() - 1; i++)
            {
                qreal x = i;
                qreal y = dataList[i].toInt();
                lineSeries->append(x, y);
            }
            lineSeries->setName("case 1");
            m_chart = new QChart();
            m_chart->addSeries(lineSeries);
            m_chart->createDefaultAxes();
            m_chart->setTheme(QChart::ChartThemeDark);
            m_chart->legend()->hide();
            chartView->setChart(m_chart);
            chartView->resize(QSize(500, 800));
            chartView->setRenderHints(QPainter::Antialiasing);
            qDeleteAll(ui.widget->children());
            m_chart->setTitle("Audio");
            QGridLayout* baseLayout = new QGridLayout(); //便于显示,创建网格布局
            chartView->setRenderHint(QPainter::Antialiasing);
            baseLayout->addWidget(chartView, 0, 0);
            ui.widget->setLayout(baseLayout);
        }
        else {
            QBarSet* set0 = new QBarSet("Jane");
            QBarSet* set1 = new QBarSet("John");
            QBarSet* set2 = new QBarSet("Axel");
            QBarSet* set3 = new QBarSet("Mary");
            QBarSet* set4 = new QBarSet("Samantha");
            *set0 << 1 << 2 << 3 << 4 << 5 << 6;// Jane 6个月份的值
            *set1 << 5 << 0 << 0 << 4 << 0 << 7;
            *set2 << 3 << 5 << 8 << 19 << 8 << 5;
            *set3 << 5 << 6 << 7 << 3 << 4 << 5;
            *set4 << 9 << 7 << 5 << 3 << 1 << 2;
            //![1]
            //![2]
            QBarSeries* series = new QBarSeries();
            series->append(set0);
            series->append(set1);
            series->append(set2);
            series->append(set3);
            series->append(set4);
            //![2]
            //![3]
            QChart* chart = new QChart();
            chart->addSeries(series);
            chart->setTitle("Simple barchart example");
            chart->setAnimationOptions(QChart::SeriesAnimations);
            //![3]
            //![4]
            QStringList categories;
            categories << "Jan" << "Feb" << "Mar" << "Apr" << "May" << "Jun";
            QBarCategoryAxis* axis = new QBarCategoryAxis();
            axis->append(categories);
            chart->createDefaultAxes();//创建默认的左侧的坐标轴(根据 QBarSet 设置的值)
            chart->setAxisX(axis, series);//设置坐标轴
            //![4]
            //![5]
            chart->legend()->setVisible(true); //设置图例为显示状态
            chart->legend()->setAlignment(Qt::AlignBottom);//设置图例的显示位置在底部
            //![5]
            //![6]
            QChartView* chartView = new QChartView(chart);
            chartView->setRenderHint(QPainter::Antialiasing);
            //![6]
            //![7]
            qDeleteAll(ui.widget->children());
            chart->setTitle("Audio");
            QGridLayout* baseLayout = new QGridLayout(); //便于显示,创建网格布局
            chartView->setRenderHint(QPainter::Antialiasing);
            baseLayout->addWidget(chartView, 0, 0);
            ui.widget->setLayout(baseLayout);
        }
        }
        });
相关文章
|
6月前
|
Linux iOS开发 UED
探索Qt折线图之美:一次详尽的多角度解析
探索Qt折线图之美:一次详尽的多角度解析
798 0
|
3月前
|
存储
【Qt 学习笔记】Qt常用控件 | 多元素控件 | Table Widget的说明及介绍
【Qt 学习笔记】Qt常用控件 | 多元素控件 | Table Widget的说明及介绍
178 3
|
3月前
|
索引
【Qt 学习笔记】Qt常用控件 | 多元素控件 | List Widget的说明及介绍
【Qt 学习笔记】Qt常用控件 | 多元素控件 | List Widget的说明及介绍
336 3
|
3月前
|
容器
【Qt 学习笔记】Qt常用控件 | 容器类控件 | Tab Widget的使用及说明
【Qt 学习笔记】Qt常用控件 | 容器类控件 | Tab Widget的使用及说明
69 2
|
3月前
|
数据可视化 API
【Qt 学习笔记】Qt常用控件 | 多元素控件 | Tree Widget的说明及介绍
【Qt 学习笔记】Qt常用控件 | 多元素控件 | Tree Widget的说明及介绍
31 2
|
4月前
QT设置widget背景图片
该内容介绍如何在Qt中为控件添加背景图片。主要方法包括:1) 在样式表中使用`border-image`属性指定控件及其背景图片;2) 使用调色板`QPalette`设置图片,但可能导致窗口显示不下;3) 在`paintEvent`中绘制图片,适合自定义绘图但不适用于子窗口;4) 通过覆盖一个大小与窗口相同的`QLabel`来设置背景图片,可实现动态背景。推荐使用样式表设置背景,简单高效且适合子窗口。
246 3
|
3月前
【Qt 学习笔记】Qt常用控件 | 显示类控件 | Calendar Widget的使用及说明
【Qt 学习笔记】Qt常用控件 | 显示类控件 | Calendar Widget的使用及说明
150 0
|
6月前
|
前端开发 JavaScript UED
深度解析Qt背景设计:从基础到高级,从Widget到Quick(三)
深度解析Qt背景设计:从基础到高级,从Widget到Quick
240 0
|
6月前
|
存储 编解码 JavaScript
深度解析Qt背景设计:从基础到高级,从Widget到Quick(二)
深度解析Qt背景设计:从基础到高级,从Widget到Quick
317 0
|
6月前
|
前端开发 图形学 UED
深度解析Qt背景设计:从基础到高级,从Widget到Quick(一)
深度解析Qt背景设计:从基础到高级,从Widget到Quick
625 0