运行截图如下:

文件结构图如下:

代码如下:

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QVector>
#include "qcustomplot.h"namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();void timerEvent(QTimerEvent *event);public slots:void btnClicked();private:Ui::Widget *ui;QVector<double> m_x,m_y;QCPItemText *m_groupTracerText;QCPItemCurve *m_groupTracerArrow;int m_timerId;int m_timeNum;
};#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);for(int i=0;i<200;i++){m_x.append(i);m_y.append(m_x[i]*m_x[i]*i);}this->setWindowTitle("CSDN IT1995");ui->widget->addGraph();ui->widget->graph()->setData(m_x,m_y);ui->widget->graph()->setScatterStyle(QCPScatterStyle(QCPScatterStyle::ssCircle, QPen(Qt::red, 3), QBrush(Qt::white), 22));ui->widget->graph()->setPen(QPen(Qt::red,3));ui->widget->setInteractions(QCP::iRangeDrag|QCP::iRangeZoom|QCP::iSelectLegend);ui->widget->xAxis->setBasePen(QPen(Qt::red, 1));ui->widget->yAxis->setBasePen(QPen(Qt::red, 1));ui->widget->xAxis->setSubTickPen(QPen(Qt::red, 1));ui->widget->yAxis->setSubTickPen(QPen(Qt::red, 1));ui->widget->xAxis->setTickLabelColor(Qt::red);ui->widget->yAxis->setTickLabelColor(Qt::red);ui->widget->xAxis->grid()->setPen(QPen(QColor(40, 40, 40), 1));ui->widget->yAxis->grid()->setPen(QPen(QColor(40, 40, 40), 1));ui->widget->xAxis->grid()->setSubGridPen(QPen(QColor(180, 180, 180), 1));ui->widget->yAxis->grid()->setSubGridPen(QPen(QColor(180, 180, 180), 1));m_groupTracerArrow = new QCPItemCurve(ui->widget);m_groupTracerText = new QCPItemText(ui->widget);QColor color(0, 0, 0);color.setAlphaF(0);m_groupTracerArrow->setPen(color);m_groupTracerText->setText("");m_timeNum=0;ui->widget->replot();connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(btnClicked()));m_timerId=startTimer(1000);
}Widget::~Widget()
{delete ui;
}void Widget::timerEvent(QTimerEvent *event)
{if(event->timerId()==m_timerId){m_timeNum++;}if(m_timeNum>1){QColor color(0, 0, 0);color.setAlphaF(0);m_groupTracerArrow->setPen(color);m_groupTracerText->setText("");m_timeNum=0;ui->widget->replot();}
}void Widget::btnClicked()
{ui->widget->xAxis->setRange(ui->spinBox->text().toInt()-10,ui->spinBox->text().toInt()+10);ui->widget->yAxis->setRange(m_y[ui->spinBox->text().toInt()]-10,m_y[ui->spinBox->text().toInt()]+10);m_groupTracerText->setColor(Qt::red);m_groupTracerText->position->setType(QCPItemPosition::ptAxisRectRatio);m_groupTracerText->setPositionAlignment(Qt::AlignRight|Qt::AlignTop);m_groupTracerText->position->setCoords(1.0, 0.20);m_groupTracerText->setText("就是这个点");m_groupTracerText->setTextAlignment(Qt::AlignLeft);m_groupTracerText->setFont(QFont(font().family(), 9));m_groupTracerText->setPadding(QMargins(8, 0, 0, 0));m_groupTracerArrow->setPen(QPen(Qt::red));m_groupTracerArrow->start->setParentAnchor(m_groupTracerText->left);m_groupTracerArrow->startDir->setParentAnchor(m_groupTracerArrow->start);m_groupTracerArrow->startDir->setCoords(-40, 0);m_groupTracerArrow->end->setCoords(m_x[ui->spinBox->text().toInt()],m_y[ui->spinBox->text().toInt()]);m_groupTracerArrow->endDir->setParentAnchor(m_groupTracerArrow->end);m_groupTracerArrow->endDir->setCoords(0, -40);m_groupTracerArrow->setHead(QCPLineEnding::esSpikeArrow);m_groupTracerArrow->setTail(QCPLineEnding(QCPLineEnding::esBar,(m_groupTracerText->bottom->pixelPosition().y()-m_groupTracerText->top->pixelPosition().y())*0.85));ui->widget->replot();
}

main.cpp

#include "widget.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

Qt工作笔记-QCustomplot绘制表,实现输入定位功能相关推荐

  1. Qt工作笔记-QCustomPlot让曲线动起来

    其实就是用了一个记时器,而且相当极端,把startTime搞成了0,真是可怕啊 运行截图如下: 代码如下: widget.h #ifndef WIDGET_H #define WIDGET_H#inc ...

  2. Qt工作笔记-QCustomPlot的基本使用

    运行截图如下: 代码如下: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget>#include "qcust ...

  3. Qt工作笔记-发送端发送Json格式的数据包,接收端解析数据包

    原理以及运行 原理是因为QJsonDocument提供了一个函数toJson 可以直接把Json数据转成QByteArray,这样就可以直接发送数据包,然后再按照常规方法解析即可,本源码中含解析内容, ...

  4. Qt工作笔记-使用QCustomplot实现鼠标拖动数据点画曲线

    运行截图如下: 逻辑很简单,下面直接上代码. widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget>#include &q ...

  5. Qt工作笔记-QLineEdit用正则限制文本框的输入内容+正则表达式语法

    原文地址: https://blog.csdn.net/graceland525/article/details/48676071//使用正则表达式限制只能输入数字 QRegExp rx(" ...

  6. Qt工作笔记-QML中TextInput设置默认值,以及使用正则表达式只能输入整数

    程序运行截图如下: 源码如下: import QtQuick 2.5 import QtQuick.Window 2.2Window {visible: truewidth: 640height: 4 ...

  7. C/C++|Qt工作笔记-4种方法判断当前对象(类)名或标识(继承发,typeid法,元对象className()法,Q_CLASSINFO法)

    回想起3个月前,刚刚参加工作也做过类似的笔记,但只有2种方法,估计刚毕业没有什么墨水,经过3个月时间又多了2种方法: 这些方法都可用于RTTI 第一个方法是继承发(C++中很推荐用这个,感觉用这个结构 ...

  8. Qt工作笔记-Qt元对象系统解析【2合1】

    博文转载地址: https://blog.csdn.net/spwper/article/details/51332187 说Qt信号与槽是一个很好机制,不如说Qt的元对象系统很强大.这也是大家讲Qt ...

  9. Qt工作笔记-Qt5中中文编码方面的笔记

    目前在使用国内的数据库和实时库接口. 说句实话,国内的东西与国外的东西比,在用户体验和接口调用上比还是存在很大的距离. 个人喜欢用QString去存储数据.个人感觉QTL比STL开发起来要快点 这里有 ...

最新文章

  1. 系统调用002 KiSystemService函数逆向分析
  2. 2013工资新规定,未来的八种人将会被淘汰!
  3. limux php启动_linux下nginx与php设置开机启动代码
  4. var result = ![] == []; console.log(result); // 结果是?为什么?
  5. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 23丨向CEO汇报工作的人【难度中等】​
  6. C#根据网址生成静态页面
  7. feign直接走熔断_SpringCloud微服务(03):Hystrix组件,实现服务熔断
  8. mysql 外键和事务,MySQL-约束和事务
  9. 基于Bert-NER构建特定领域中文信息抽取框架
  10. angular tslint 自动修正
  11. 2021电工杯数学建模B题代码与思路(Python)
  12. ORACLE认证考试之ocjp 考试题之五
  13. 阿里云服务器 ECS 数据盘与系统盘是什么?
  14. 服务器浏览器怎么打不开网页,电脑能上qq打不开网页怎么回事?
  15. 最完整最全面的汉化中文游戏列表
  16. 7、快速更改subclass颜色
  17. Switch case 使用及嵌套语法
  18. 消防应急疏散指示系统在某居民社区综合体项目的应用
  19. 【计算机网络】第九章:无线网络
  20. Ext.TabPanel 各属性一览

热门文章

  1. [转]CISCO IOS命名规则
  2. 程序员夏天格子衫,冬天穿什么?
  3. 自助式BI工具分享:浅析FineBI
  4. 成就优秀程序员的很多因素你知道多少?
  5. 多期高收入的C++on-job学员
  6. [视频]Google Chrome背后的故事
  7. 跨进程实现在Tree中快速定位节点
  8. 每个程序员都该学习的5种开发语言,不可错过!
  9. 不管你的编程技术多菜,这都要掌握!
  10. 经典面试题(47):以下代码将输出的结果是什么?