qcustomplot 怎么添加标签

qcustomplot 怎么添加标签,第1张

1、怎样配置使用就不细说了,官网上代码和文档都是有的

2、关键函数与设置属性的介绍

//设置显示的大小和位置

ui->PressDraw->setGeometry(QRect(30,30,650,350));

//设置需要显示的坐标轴,

ui->PressDraw->xAxis2->setVisible(true);

ui->PressDraw->xAxis2->setTickLabels(true);

ui->PressDraw->xAxis->setVisible(false);

ui->PressDraw->xAxis->setTickLabels(false);

//添加箭头

ui->PressDraw->xAxis2->setUpperEnding(QCPLineEnding::esSpikeArrow);

ui->PressDraw->yAxis->setUpperEnding(QCPLineEnding::esSpikeArrow);

//纵坐标反转找了好久才知道这个函数

ui->PressDraw->yAxis->setRangeReversed(true);

[cpp] view plain copy

//设置坐标轴单位名称

ui->PressDraw->xAxis2->setLabel(codec->toUnicode("压力(MPa)"));

//右上标签显示

ui->PressDraw->legend->setVisible(true);

ui->PressDraw->legend->setFont(QFont("Helvetica",9));

ui->PressDraw->legend->setBrush(QBrush(QColor(255,255,255,210)));//210透明度

ui->PressDraw->legend->setSelectableParts(QCPLegend::spItems);

ui->PressDraw->axisRect()->insetLayout()->setInsetAlignment(0, Qt::AlignTop|Qt::AlignRight);//标签位置

//移动和放缩

ui->PressDraw->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectPlottables);

//向绘图区域QCustomPlot添加一条曲线

ui->PressDraw->addGraph(ui->PressDraw->yAxis,ui->PressDraw->xAxis);

ui->PressDraw->graph(i)->setData(y,x);//绘图的数据

ui->PressDraw->graph(i)->setName(codec->toUnicode("曲线%1")arg(i));

ui->PressDraw->graph(i)->setScatterStyle(m_StyleChoiceat(i));//点样式

ui->PressDraw->graph(i)->setPen(m_PenChoiceat(i));//画笔

ui->PressDraw->graph(i)->rescaleAxes();//重绘

3、很多标签是有槽函数的,可根据需要进行编写。比如可以通过点击“深度”,实现单位换算。以及右上标签"曲线0",实现需要的功能,我这里是点击实现数据的更改和查看。这里列出一些槽函数作参考。

//双击修改坐标轴标签设置单位

connect(ui->PressDraw, SIGNAL(axisDoubleClick(QCPAxis,QCPAxis::SelectablePart,QMouseEvent)),

this, SLOT(axisLabelDoubleClick_Press(QCPAxis,QCPAxis::SelectablePart)));

-----------------------------------------------------------------------------------------

//点击曲线显示曲线参数信息

connect(ui->PressDraw, SIGNAL(plottableClick(QCPAbstractPlottable,QMouseEvent)),

this, SLOT(LineDoubleClick_Press(QCPAbstractPlottable)));

-----------------------------------------------------------------------------------------

//右键保存图像(很重要,根据设置将图像保存为自己需要的格式)

ui->PressDraw->setContextMenuPolicy(Qt::CustomContextMenu);

connect(ui->PressDraw, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(PresscontextMenuRequest(QPoint)));

//槽函数代码

void simulationPT::PresscontextMenuRequest(QPoint pos)

{

QTextCodec codec = QTextCodec::codecForName("GB18030");

QMenu menu = new QMenu(this);

menu->setAttribute(Qt::WA_DeleteOnClose);

if (ui->PressDraw->legend->selectTest(pos, false) < 0){

menu->addAction( codec->toUnicode("保存"), this, SLOT(PressSaveGraph()));

}

menu->popup(ui->PressDraw->mapToGlobal(pos));

}

-----------------------------------------------------------------------------------------

//点击右上标签编辑数据

connect(ui->PressDraw, SIGNAL(legendDoubleClick(QCPLegend,QCPAbstractLegendItem,QMouseEvent)), this,

SLOT(legendDoubleClick_Press(QCPLegend,QCPAbstractLegendItem)));

MouseEvent->pos()可以获得相对于viewport()的坐标pos,

然后

size1=customPlot->viewport()size();

size2=customPlot->axisRect()->size();

pos-(size1-size2)/ 2就可以获得鼠标点击位置的坐标

MouseEvent->pos()可以获得相对于viewport()的坐标pos,

然后

size1=customPlot->viewport()size();

size2=customPlot->axisRect()->size();

pos-(size1-size2)/ 2就可以获得鼠标点击位置的坐标

MouseEvent->pos()可以获得相对于viewport()的坐标pos,

然后

size1=customPlot->viewport()size();

size2=customPlot->axisRect()->size();

pos-(size1-size2)/ 2就可以获得鼠标点击位置的坐标

MouseEvent->pos()可以获得相对于viewport()的坐标pos,

然后

size1=customPlot->viewport()size();

size2=customPlot->axisRect()->size();

pos-(size1-size2)/ 2就可以获得鼠标点击位置的坐标

在你的应用中使用QCustomPlot 有2种方法:

1、将下载下来的qcustomploth和qcustomplotcpp加入你的工程中。在你要使用qcustomplot的文件中:

[cpp] view plain copy print

#include "qcustomploth"

然后像使用QWidget那样使用就行,因为QCustomPlot也是继承自QWidget的:

[cpp] view plain copy print

QCustomplot myqcp = new QCustomPlot;

使用Qt Designer的话,在一个QWidget控件右键,提升为,

然后在d出的对话框中,在提升为类名那里输入QCustomPlot,然后头文件那里会自动填充为qcustomploth。单击添加按钮将QCustomPlot加入提升类列表中,最后单击提升就可以了。

注意:提升之后不会立即看到什么变化,但当你运行程序的时候,你就能看到控件具有坐标和网格了。

2、不用包含qcustomploth和qcustomplotcpp,只需引入qcustomplotso (GNU/Linux)或qcustomplotdll(MSWindows) file。接下来说明如何编译qcustomplot库:

首先,从下载地址下载QCustomPlot-sharedlib,然后拷贝qcustomploth和qcustomplotcpp到与qcustomplot-sharedlib同级的目录下,然后在命令行模式进入sharedlib-compilation目录,运行qmake;mingw32-make;稍等片刻就会产生俩个文件夹debug和release,里面分别有qcustomplot库的debug和release版本,windows是dll,linux是a(而官网说的是so,有点出入?)然后怎么使用qcustomplot很简单,我就不说了- -

注意:如果你使用的Qt版本在50以上,需要在pro文件中的QT变量加上printsupport,

[cpp] view plain copy print

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport

这是因为Qt老版本不支持widgets和printsupport。

使用QCustomPlot绘图的基础

首先你用QCustomPlot::addGraph创建一个曲线图然后你给曲线图赋一些数据点(一对QVector<double>为x,y的值)并且定义曲线图的外观(线型,分散图案,颜色,线笔)子厚调用QCustomPlot::replot。注意replot应该被自动调用当widget被重新改变大小的时候或者内建的用户交互被触发的时候(拖拽坐标轴范围用鼠标或者齿轮),莫ten情况下QCustomPlot有四个类型为QCPAxis的坐标轴:xAxis,yAxis,xAxis2,yAxis2。组成了下,左,上,右四个坐标轴。他们的范围(QCPAxis::setRange)定义了Plot当前可见的部分。

MouseEvent->pos()可以获得相对于viewport()的坐标pos,

然后

size1=customPlot->viewport()size();

size2=customPlot->axisRect()->size();

pos-(size1-size2)/ 2就可以获得鼠标点击位置的坐标

以上就是关于qcustomplot 怎么添加标签全部的内容,包括:qcustomplot 怎么添加标签、qcustomplot 怎么放大动态曲线、qcustomplot坐标轴绘图按x轴大小排序方式绘图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9402153.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存