精华内容
下载资源
问答
  • QT图表说明注释源码
  • 20种qt图表显示主题和qt常见经典图表源码
  • QT图表QtCharts的使用

    2020-07-23 15:36:28
    什么是Qt图表Qt图表是专门用来数据可视化的控件 • Qt图表包含折线、饼图、棒图、散点图、范围图等 • Qt图表也叫QtCharts,之前是不发布的,直到最近几年才发布 • 在QtCharts没发布之前,项目开发者都是使用...

    什么是Qt图表

    • Qt图表是专门用来数据可视化的控件
    • Qt图表包含折线、饼图、棒图、散点图、范围图等
    • Qt图表也叫QtCharts,之前是不发布的,直到最近几年才发布
    • 在QtCharts没发布之前,项目开发者都是使用QCustomPlot或
    • QWT等第三方图表库开发Qt图表控件的
    • 使用Qt图表时,需要Qt += charts

    QT折线图

    • Qt折线图使用的类是QLineSeries
    • Qt折线图包含如下几个部分:
    ① 坐标轴(x,y)
    ② 线条
    ③ 参考背景线
    • 折线图是依附在QChartView(继承来自QWidget)窗体上

    QT折线图设计方法

    ① 新建一个QChart图表对象chart;
    ② 往chart添加坐标轴(x,y轴);
    ③ 在ui里提升一个QWidget成QChartView,作为chart的底盘;
    ④ 往chart里添加新的折线对象QLineSeries(可添加多条)

    在 .h 头文件里创建指针变量:

     QChart *temhumichart;
     QValueAxis *axisX1;
     QValueAxis *axisY1;
     QLineSeries *temline;
     QLineSeries *humiline;
    

    不要忘记在 .C文件里 new 一下,.C文件代码如下:
    新建一个QChart图表对象chart;
    往chart添加坐标轴(x,y轴); 这两步我就合并在这里一起写了:

       temhumichart = new QChart();
       temhumichart->legend()->hide();
       temhumichart->setTitle("图表标题");  //设置标题
    
       //给chart添加坐标轴
        axisX1 = new QValueAxis();
        //设置x轴
        axisX1->setTitleText("时间");
        axisX1->setLabelFormat("%i");
        axisX1->setTickCount(12);         //多少刻度
        axisX1->setRange(0,23);		     //刻度范围
        temhumichart->addAxis(axisX1,Qt::AlignBottom); //把x坐标轴加到底部
        axisY1 = new QValueAxis();
        //设置y轴
        axisY1->setTitleText("温湿度");
        axisY1->setLabelFormat("%i");
        axisY1->setTickCount(5);
        axisY1->setRange(0,80);
        temhumichart->addAxis(axisY1,Qt::AlignLeft);  //把Y坐标轴加到左侧
    
        
    

    上面是我写的一个例子,方法就是这个方法,根据自己的东西进行修改即可。
    然后就来到了第三步,在ui里提升QWidget成QChartView,作为chart的底盘;
    先拖出一个QWidget,然后: 右键 -> 提升为
    在这里插入图片描述
    在这里插入图片描述

    提升完毕后,往chart里添加新的折线对象QLineSeries(可添加多条);

        temline = new QLineSeries(this);
        temhumichart->addSeries(temline); //添加折线到图标里,必须先做这一步
        temline->attachAxis(axisX1);//折线以axisX1为x轴基准
        temline->attachAxis(axisY1);//折线以axisY1为y轴基准
    
        humiline = new QLineSeries(this);
        temhumichart->addSeries(humiline);
        humiline->attachAxis(axisX1);
        humiline->attachAxis(axisY1);
    
        ui->tempwidget->setChart(temhumichart);
    

    最后就是添加数据和删除数据了:
    添加数据:

    serial->append(x, y); //x,y可以是浮点数
    

    清除所有数据:

    serial->clear();
    

    到这里一个简单的图标设计就完成了,谢谢大家,今天有点累了就不多说了,下期再见

    展开全文
  • Qt 图表UI QTreeWidget

    千次阅读 2020-03-01 09:51:24
    Qt 图表UI QTreeWidgetQTreeWidget和QTreeView区别,应该使用哪一个QTreeWidget常用样式表QTreeWidget常用属性QTreeWidget 设置表格可以编辑/选中/不可编辑等等 QTreeWidget和QTreeView区别,应该使用哪一个   Qt...

    QTreeWidget和QTreeView区别,应该使用哪一个

      Qt界面中需要使用图表的时候,默认提供两个widget QTreeWidgetQTreeView
      如果你需要给QTreeWidget增加新建后删除后各种ui变化,选中后各种ui变化等等特殊效果/事件,建议不要用QTreeWidget和Item,使用mode/viewQTreeWidget最好仅用在表格变化不大的地方。比如固定的列表信息、固定尺寸报表等。
      两个大致区别是 QTreeWidget继承自QTreeView。Qt表格显示使用的是 view/mode 模式,界面和数据分开,两者使用代理链接。QTreeView就是界面,如果需要修改数据则应该通过代理。比如Qt封装好的QFileSystemModel在view中显示,就是典型的mode/view结构。
    在这里插入图片描述
      QTreeView提供了一个接口,setModel用来设置mode(也就是数据)。QTreeWidget作用就是默认包含了一个mode,并增加了如果操作这个默认mode的接口。QTableWidget类提供具有默认模型的基于项目的表视图。这样当使用QTreeWidget时候会简单很多,当然他也引入了一写新的问题,比如默认带了表视图,当我图表视图ui很复杂时候不太方便实现,而且数据没有分开逻辑不清晰。
    在这里插入图片描述
      自己的项目中应该使用那个看情况,如果你的图表ui不复杂,跟QTableWidget默认的图表视图差异不大,而且不需要跟这个Mode关联(比如QSql、QFile),应该使用QTableWidget,反之则用QTreeView
      (以上属于个人理解,如果错误请指出)

    QTreeWidget常用样式表

    QTreeWidget {
        border-radius:5px;
        font-size:20px;
        background: rgb(79, 79, 83);
        outline:0px;
    }
    QTreeWidget::item {
        color:rgb(233, 233, 233);
        background: rgb(79, 79, 83);
    	min-height: 30px;
    }
    QTreeWidget::item:alternate {
        background: rgb(79, 79, 83);
    }
    QHeaderView {
        color: white;
    }
    QHeaderView::section {
        background-color: rgb(105, 106, 111);
        border:none;
        font-size:20px;
    }
    

    在这里插入图片描述

    QTreeWidget {
        border-radius:5px;
        font-size:14px;
        background: rgb(79, 79, 83);
        outline:0px;
    }
    QTreeWidget::item {
        color:rgb(233, 233, 233);
        background: rgb(87, 87, 91);
        padding:0px 14px;
    	min-height: 40px;
    }
    QTreeWidget::item:alternate {
        background: rgb(79, 79, 83);
    }
    QTreeWidget::item:selected, QTreeWidget::item:hover  {
    	background: rgb(104, 104, 108);
    }
    QHeaderView {
        color: white;
        text-align:center;
    }
    QHeaderView::section {
        background-color: rgb(105, 106, 111);
        border:none;
        font-size:14px;
        padding:0px 14px;
    }
    

    在这里插入图片描述

    QTreeView{
    border:1px solid #0F1F2F;
    selection-background-color:#265687;
    selection-color:#4894C6;
    alternate-background-color:#265687;
    gridline-color:#0F1F2F;
    }
    QTreeView::branch:closed:has-children{
    margin:4px;
    border-image:url(:/qss/blackblue/branch_open.png);
    }
    
    QTreeView::branch:open:has-children{
    margin:4px;
    border-image:url(:/qss/blackblue/branch_close.png);
    }
    
    QTreeView,QTreeView::branch{
    background:#1B3149;
    }
    QTreeView::item:selected{
    color:#4894C6;
    background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #243D5B,stop:1 #243D5B);
    }
    QTreeView::item:hover,QHeaderView{
    color:#4894C6;
    background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #265687,stop:1 #265687);
    }
    QTreeView::item{
    padding:1px;
    margin:0px;
    }
    

    在这里插入图片描述

    QTreeWidget常用属性


    QTreeview有的接口QTreeWidget基本都可以使用,下边这里几个是QTreeWidget可以使用QTreeview常用接口

    ui->treeWidget->setAutoExpandDelay(-1);//节点展开鼠标悬停时间
    ui->treeWidget->setIndentation(10);//缩进字节(添加自定义图标用的)
    ui->treeWidget->setRootIsDecorated(1);//第一列是否缩进(添加自定义图标用的)
    ui->treeWidget->setUniformRowHeights(1);//强制所有项等高
    ui->treeWidget->setItemsExpandable(1);//是否支持展开折叠
    ui->treeWidget->setSortingEnabled(1);是否支持自动排序(如果需要排序的表格一般都常常改变,建议别用QTreeWidget了)
    ui->treeWidget->setAnimated(1);//是否支持动画,这个需要单独在定义显示动画
    ui->treeWidget->setAllColumnsShowFocus(1);//选中是焦点在本格还是本行(节点)
    ui->treeWidget->setWordWrap(1);//自动换行,如果文字太多想用...省略的话,用矩形框把qstring封一下在画
    ui->treeWidget->setHeaderHidden(0);//是否显示标题,下边有一个Visible,区别在于Visible是隐藏Hidden是在内存销毁
    ui->treeWidget->setExpandsOnDoubleClick(0);//双击是否可以展开子节点。其实如果有节点的话还是建议用mode/view
    

    QTreeWidget专有的
    1.ui上Widget显示几列

    ui->treeWidget->setColumnCount(2);
    

    QTreeWidget的head专有的
    1.Widget表头是否可见

    ui->treeWidget->header()->setVisible(1);
    

    2.Widget表头顺序是否可以拖动改变

    ui->treeWidget->header()->setCascadingSectionResizes(1);
    

    3.Widget表头文字属性(居中?靠左?靠右?)

    ui->treeWidget->header()->setDefaultAlignment(Qt::Alignment alignment);
    

    在这里插入图片描述
    4.Widget表头宽度

     ui->treeWidget->header()->setDefaultSectionSize(100);
    

    5.Widget被选部分是否高亮显示

     ui->treeWidget->header()->setHighlightSections(1);
    

    6.Widget各个区域的最小值

     ui->treeWidget->header()->setMinimumSectionSize(50);
    

    7.Widget排序按钮是否显示

      ui->treeWidget->header()->setSortIndicatorShown(1));
    

    8.Widget最后一个区域是否占满表格余下的所有部分

      ui->treeWidget->header()->setStretchLastSection(1);
    
        for (qint32 i = 0; i < ui->treeWidget->topLevelItemCount(); ++i) {
            QTreeWidgetItem *item = ui->treeWidget->topLevelItem(i);
            if (item) {
                item->setFlags(item->flags() | Qt::ItemIsEditable);
            }
        }
    

    QTreeWidget 设置表格可以编辑/选中/不可编辑等等

        for (qint32 i = 0; i < ui->treeWidget->topLevelItemCount(); ++i) {
            QTreeWidgetItem *item = ui->treeWidget->topLevelItem(i);
            if (item) {
                item->setFlags(item->flags() | Qt::ItemIsEditable);
            }
        }
    
    Qt.NoItemFlags          0   没有设置任何属性。
    Qt.ItemIsSelectable     1   可以选择。
    Qt.ItemIsEditable       2   可以编辑。
    Qt.ItemIsDragEnabled    4   可以拖动它。
    Qt.ItemIsDropEnabled    8   它可以用作放置目标。
    Qt.ItemIsUserCheckable  16  用户可以选中或取消选中它。
    Qt.ItemIsEnabled        32  用户可以与项目交互。
    Qt.ItemIsTristate       64  该项可通过三个独立的状态进行检查。
    

    可以看到上面没有不可以编辑这个选项,我现在用法是。如果需要把某几个设置为不可以编辑的话,直接自定义一个QStyledItemDelegate,让后把DisableEditor返回空算了(比较傻哈),比如下边是设置第一列可以编辑,后边几列不可以编辑。其实如果你要是都不可以编辑的话,初始化默认就是不可编辑的,什么都不用加。

    
    class DisableEditor : public QStyledItemDelegate {
      public:
        explicit DisableEditor(QWidget *parent = nullptr);
    
        virtual QWidget *createEditor(
            QWidget *parent,
            const QStyleOptionViewItem &option,
            const QModelIndex &index) const override ;
    };
    DisableEditor::DisableEditor(QWidget *parent)
        : QStyledItemDelegate(parent) {
    }
    QWidget *DisableEditor::createEditor(
        QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const {
        Q_UNUSED(parent);
        Q_UNUSED(option);
        Q_UNUSED(index);
        return nullptr;
    }
    
        for (qint32 i = 1; i < ui->treeWidget->columnCount(); ++i) {
            ui->treeWidget->setItemDelegateForColumn(
                i, new DisableEditor(ui->treeWidget));
        }
    
    展开全文
  • Qt图表例子

    2018-05-30 11:05:13
    qt下使用图表的demo,添加动态绘制数据的例子,对应地址 https://blog.csdn.net/Holy_Water/article/details/80507033
  • “ GobChartsWidget”是GNU LGPL下免费分发的开源计划,旨在包含在需要基本图形图表显示功能的Qt应用程序中(简称免费Qt图表窗口小部件)。 由于跨不同站点管理信息几乎与处理代码重复一样适得其反,因此我敦促您...
  • Qt图表bartchart新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个...

    新建widget应用:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在.pro中添加:QT += charts

    然后绘制 ui 窗体,从 designer 的工具箱中选择一个 “Widget” 类型的控件,然后在它上面单击鼠标右键,选择 “提升为”。

    在弹出的界面中,填写 “提升的类名称” 为: QChartView,头文件名称会自动生成,我们不用关心。然后单击“添加”按钮即可。
    在这里插入图片描述
    在这里插入图片描述
    接着在.h中添加:
    #include <QtCharts>

    QT_CHARTS_USE_NAMESPACE

    在.h中定义:
    QChartView *chartView1;

    复制Qt例程barchart部分代码

    因为我们要建自己的ui,所以我们需要修改官方的例程,修改的红色这个:
    在这里插入图片描述
    复制例程代码,除了最后高亮显示的几个:
    在这里插入图片描述

    修改自己的程序:

    将上述代码复制放到自己的构造函数中,同时修改以下红色的地方:
    在这里插入图片描述
    运行结果:
    在这里插入图片描述

    完整代码:

    widget.h代码:

    #ifndef WIDGET_H
    #define WIDGET_H
    
    #include <QWidget>
    #include <QtCharts>
    QT_CHARTS_USE_NAMESPACE
    
    QT_BEGIN_NAMESPACE
    namespace Ui { class Widget; }
    QT_END_NAMESPACE
    
    class Widget : public QWidget
    {
        Q_OBJECT
    
    public:
        Widget(QWidget *parent = nullptr);
        ~Widget();
    
    
    private:
        Ui::Widget *ui;
        QChartView *chartView1;
    
    };
    #endif // WIDGET_H
    
    

    widget.cpp代码:

    #include "widget.h"
    #include "ui_widget.h"
    
    Widget::Widget(QWidget *parent)
        : QWidget(parent)
        , ui(new Ui::Widget)
    {
        ui->setupUi(this);
    
        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;
        *set1 << 5 << 0 << 0 << 4 << 0 << 7;
        *set2 << 3 << 5 << 8 << 13 << 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 *axisX = new QBarCategoryAxis();
        axisX->append(categories);
        chart->addAxis(axisX, Qt::AlignBottom);
        series->attachAxis(axisX);
    
        QValueAxis *axisY = new QValueAxis();
        axisY->setRange(0,15);
        chart->addAxis(axisY, Qt::AlignLeft);
        series->attachAxis(axisY);
    //![4]
    
    //![5]
        chart->legend()->setVisible(true);
        chart->legend()->setAlignment(Qt::AlignBottom);
    
        ui->widget->setChart(chart);
    
    }
    
    Widget::~Widget()
    {
        delete ui;
    }
    
    
    

    ui界面:
    在这里插入图片描述

    展开全文
  • Qt图表eCharts

    千次阅读 热门讨论 2017-12-11 19:38:31
    Qt图表-eCharts Qt图表-eCharts 简述 效果图 代码 结尾简述 最近,因某些需要,做了一个图表,这里用的是第三方的JS库,很强大,ECHARTS,应用起来很方便,功能很多,这里我贴出了,API文档。 效果图代码option...

    Qt图表eCharts

    简述

    最近,因某些需要,做了一个图表,这里用的是第三方的JS库,很强大,ECHARTS,应用起来很方便,功能很多,这里我贴出了,API文档。

    效果图

    这里写图片描述

    代码

    option = {
    //颜色组
        color:['#00A1FF','#FF7700'],
        //提示框
        tooltip: {
            trigger: 'axis',
            //提示内容,这里不懂{bo},{b1}的,可以看API文档,介绍得很详细
            formatter: '{b0}' + ':00-' + 1 + ':59<br/>{a0}: {c0}<br/>{a1}: {c1}',
            //边距
            padding: [10, 10],
        },
        //说明, -昨日 -今日
        legend:{
          data:[
            {name: '昨日',icon: 'line',textStyle: {color: '#666666'}},
            {name: '今日',icon: 'line',textStyle: {color: '#666666'}}],
        },
        //X轴
        xAxis:  {
            type: 'category',
            boundaryGap: false,
            data: ['1','2','3','4','5','6','7'],
            axisLine: {
                lineStyle:{
                    color:'#cccccc',
    
                }
            },
            axisLabel:{
                color:'#666666',
            },
            axisTick:{
                show:false
            }
        },
        //Y轴隐藏
        yAxis: {
            min: 0,
            max: 10,
            show:false,
        },
        series: [
            {
                name:'昨日',
                type:'line',
                smooth: true,
                data:[5, 2, 1, 6, 4, 3, 2],
                symbol:'circle',
                showSymbol:false,
                lineStyle:{
                    normal:{
                      color:'#00A1FF',  
                    },
                },
                itemStyle:{
                    emphasis:{
                       color:'#00A1FF', 
                    },
                },
            },
            {
                name:'今日',
                type:'line',
                smooth: true,
                data:[2, 5, 6, 5, 3, 2, 0],
                symbol:'circle',
                showSymbol:false,
                lineStyle:{
                    normal:{
                      color:'#FF7700',  
                    },
                },
                itemStyle:{
                    emphasis:{
                       color:'#FF7700', 
                    },
                },
            }
        ]
    };            
    //html代码
    <!DOCTYPE html>
    <head>
        <meta charset="utf-8">
        <title>ECharts</title>
    </head>
    <body>
        <div id="body" style="height:400px"></div>
        <script src="echarts.common.min.js"></script>
        <script type="text/javascript">
        //初始化echarts图表
        var eChart = echarts.init(document.getElementById('body')); 
        var option;          
        //窗体自适应    
        window.onresize = eChart .resize ;        
        // 为echarts对象加载数据 
         eChart.setOption(option); 
        </script>
    </body>

    结尾

    这里我只自定义了自己需要的,有其它需要的,可以看官方API文档定制图表,功能还是相当强大的。
    只为记录,只为分享! 愿所写能对你有所帮助。

    展开全文
  • qt 图表design库 qwt

    2018-11-09 17:54:42
    QT图形库 QWT 官网源码包 解压缩后,可以用QTCreator 打开工程文件qwt.pro 查看代码和编译 配置好后可以用该库快速开发图表
  • Qt图表实现

    2021-03-02 09:55:04
    Qt二维折现图转载自正文 转载自 https://www.jianshu.com/p/4eb786d0feae 正文 Qt Charts 在Qt4时代就有了,不过一直以来是商业许可的。从5.7.0开始,Qt Charts 也纳入了开放许可证。最为简洁使用Qt Chars的方法就是...
  • qt图表的绘制

    2021-04-20 09:43:09
    Qt Charts模块是一组易于使用的图表组件,它基于Qt的Graphics View架构,其核心组件是QChartView和QChart。 QChart QChart类管理图表系列、图例和轴的图形表示,而一个QChart一般包括序列、坐标轴、图例、图表标题...
  • QT图表示例

    2021-04-10 10:52:15
  • Madplotlib是Qt图表的一个C 封装其外观、体会等都与matplotlib相似
  • qt 图表增加任意点

    2020-03-07 15:31:23
    qt 画2d图表无非就是QCustomPlot Qwt QCharts。无论是性能、易用、美观都是QCustomPlot最好。 QCustomPlot下载 https://www.qcustomplot.com/index.php/download QCustomPlot帮助文档,你下载后文件夹里.qch结尾的...
  • 点击Qt图表无法运行

    2020-05-03 16:25:53
    点击qtcreator图表无法运行 且使用命令运行出现如下错误时 [root@localhost ~] # qtcreator qtcreator: error while loading share libraries: libpcre2-16.so.0:cannot open(这是我自己的找不到libpcre2-16.so.0)...
  • Qt图表的总结

    2019-10-15 19:04:48
    二,创建图表QChart,然后再把所有的序列(XSeries),加入到QChart对象中, 三,创建坐标轴,然后把坐标轴加入到Qchart对象上,再然后把所有的序列(XSeries)都匹配到每个坐标轴上; 四,图表QChart对象设置图例 五,使用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,266
精华内容 2,506
关键字:

qt图表