Qt工作笔记-QCustomplot绘制表,实现输入定位功能
运行截图如下:
文件结构图如下:
代码如下:
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绘制表,实现输入定位功能相关推荐
- Qt工作笔记-QCustomPlot让曲线动起来
其实就是用了一个记时器,而且相当极端,把startTime搞成了0,真是可怕啊 运行截图如下: 代码如下: widget.h #ifndef WIDGET_H #define WIDGET_H#inc ...
- Qt工作笔记-QCustomPlot的基本使用
运行截图如下: 代码如下: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget>#include "qcust ...
- Qt工作笔记-发送端发送Json格式的数据包,接收端解析数据包
原理以及运行 原理是因为QJsonDocument提供了一个函数toJson 可以直接把Json数据转成QByteArray,这样就可以直接发送数据包,然后再按照常规方法解析即可,本源码中含解析内容, ...
- Qt工作笔记-使用QCustomplot实现鼠标拖动数据点画曲线
运行截图如下: 逻辑很简单,下面直接上代码. widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget>#include &q ...
- Qt工作笔记-QLineEdit用正则限制文本框的输入内容+正则表达式语法
原文地址: https://blog.csdn.net/graceland525/article/details/48676071//使用正则表达式限制只能输入数字 QRegExp rx(" ...
- Qt工作笔记-QML中TextInput设置默认值,以及使用正则表达式只能输入整数
程序运行截图如下: 源码如下: import QtQuick 2.5 import QtQuick.Window 2.2Window {visible: truewidth: 640height: 4 ...
- C/C++|Qt工作笔记-4种方法判断当前对象(类)名或标识(继承发,typeid法,元对象className()法,Q_CLASSINFO法)
回想起3个月前,刚刚参加工作也做过类似的笔记,但只有2种方法,估计刚毕业没有什么墨水,经过3个月时间又多了2种方法: 这些方法都可用于RTTI 第一个方法是继承发(C++中很推荐用这个,感觉用这个结构 ...
- Qt工作笔记-Qt元对象系统解析【2合1】
博文转载地址: https://blog.csdn.net/spwper/article/details/51332187 说Qt信号与槽是一个很好机制,不如说Qt的元对象系统很强大.这也是大家讲Qt ...
- Qt工作笔记-Qt5中中文编码方面的笔记
目前在使用国内的数据库和实时库接口. 说句实话,国内的东西与国外的东西比,在用户体验和接口调用上比还是存在很大的距离. 个人喜欢用QString去存储数据.个人感觉QTL比STL开发起来要快点 这里有 ...
最新文章
- 系统调用002 KiSystemService函数逆向分析
- 2013工资新规定,未来的八种人将会被淘汰!
- limux php启动_linux下nginx与php设置开机启动代码
- var result = ![] == []; console.log(result); // 结果是?为什么?
- 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 23丨向CEO汇报工作的人【难度中等】​
- C#根据网址生成静态页面
- feign直接走熔断_SpringCloud微服务(03):Hystrix组件,实现服务熔断
- mysql 外键和事务,MySQL-约束和事务
- 基于Bert-NER构建特定领域中文信息抽取框架
- angular tslint 自动修正
- 2021电工杯数学建模B题代码与思路(Python)
- ORACLE认证考试之ocjp 考试题之五
- 阿里云服务器 ECS 数据盘与系统盘是什么?
- 服务器浏览器怎么打不开网页,电脑能上qq打不开网页怎么回事?
- 最完整最全面的汉化中文游戏列表
- 7、快速更改subclass颜色
- Switch case 使用及嵌套语法
- 消防应急疏散指示系统在某居民社区综合体项目的应用
- 【计算机网络】第九章:无线网络
- Ext.TabPanel 各属性一览