Qt第三方库QCustomPlot——QCustomPlot解读

这个小部件类,对于QCustomPlot的所有方面都有所体现

下面阅读它的函数:

函数组织顺序为: 基本设置---添加图线---删除图线---添加额外Item---层次管理---坐标轴管理----导出图表

 	QCustomPlot (QWidget *parent=0)

void 	setViewport (const QRect &rect)//视口设置,通常就是本部件所在的长宽
void 	setBackground (const QPixmap &pm)//在整个视口的最底层绘制图片,用作背景
void 	setBackground (const QPixmap &pm, bool scaled, Qt::AspectRatioMode mode=Qt::KeepAspectRatioByExpanding)
void 	setBackground (const QBrush &brush)
void 	setBackgroundScaled (bool scaled)//设置setBackground 所绘的图是否进行缩放以适应Viewport
void 	setBackgroundScaledMode (Qt::AspectRatioMode mode)//有Qt::IgnoreAspectRatio(忽略比例,缩放至适应视口),Qt::KeepAspectRatio(保持长宽比,直到一边最大至视口边缘)Qt::KeepAspectRatioByExpanding(保持长宽比,缩放至充满视口)
void 	setAntialiasedElements (const QCP::AntialiasedElements &antialiasedElements)//抗锯齿效果,对于各对象,都有默认设置,可通过本函数,改变默认不抗锯齿的元素,使它也抗。
void 	setAntialiasedElement (QCP::AntialiasedElement antialiasedElement, bool enabled=true)//更方便的开关
void 	setNotAntialiasedElements (const QCP::AntialiasedElements ¬AntialiasedElements)//设置不抗
void 	setNotAntialiasedElement (QCP::AntialiasedElement notAntialiasedElement, bool enabled=true)
void 	setAutoAddPlottableToLegend (bool on)//是否自动添加图形到图例,默认是
void 	setInteraction (const QCP::Interaction &interaction, bool enabled=true)//设置交互方式,如是否可拖动或缩放轴,是否可选中轴或图例等。
void 	setInteractions (const QCP::Interactions &interactions)
void 	setSelectionTolerance (int pixels)//选择公差设置,在多少像素中能选中某个元素
void 	setNoAntialiasingOnDrag (bool enabled)//拖动时是否也抗锯齿
void 	setPlottingHint (QCP::PlottingHint hint, bool enabled=true)//设置其它参数,如快速绘制线(损失质量),缓存轴的lable(提高效率)
void 	setPlottingHints (const QCP::PlottingHints &hints)
void 	setMultiSelectModifier (Qt::KeyboardModifier modifier)//要多选时的按键,默认Qt::ControlModifier,即ctrl

QRect 	viewport () const//与上述大致对应
QPixmap 	background () const
bool 	backgroundScaled () const
Qt::AspectRatioMode 	backgroundScaledMode () const
QCPLayoutGrid * 	plotLayout () const
QCP::AntialiasedElements 	antialiasedElements () const
QCP::AntialiasedElements 	notAntialiasedElements () const
bool 	autoAddPlottableToLegend () const
const QCP::Interactions 	interactions () const
int 	selectionTolerance () const
bool 	noAntialiasingOnDrag () const
QCP::PlottingHints 	plottingHints () const
Qt::KeyboardModifier 	multiSelectModifier () const


QCPAbstractPlottable * 	plottable (int index)//所有添加的图线都自动加了索引,按先后顺序
QCPAbstractPlottable * 	plottable ()
bool 	addPlottable (QCPAbstractPlottable *plottable)//添加除graph线外的其它种类型的曲线或图
bool 	removePlottable (QCPAbstractPlottable *plottable)
bool 	removePlottable (int index)
int 	clearPlottables ()
int 	plottableCount () const
QList< QCPAbstractPlottable * > 	selectedPlottables () const//返回选中的线
QCPAbstractPlottable * 	plottableAt (const QPointF &pos, bool onlySelectable=false) const//返回某个点是否有图线
bool 	hasPlottable (QCPAbstractPlottable *plottable) const

QCPGraph * 	addGraph (QCPAxis *keyAxis=0, QCPAxis *valueAxis=0)//为Graph线留的特殊接口,因Graph是最常用的
bool 	removeGraph (QCPGraph *graph)
bool 	removeGraph (int index)
QCPGraph * 	graph (int index) const
QCPGraph * 	graph () const
int 	clearGraphs ()
int 	graphCount () const
QList< QCPGraph * > 	selectedGraphs () const


bool 	addItem (QCPAbstractItem *item)//添加一些附加item,如箭头等
bool 	removeItem (QCPAbstractItem *item)
bool 	removeItem (int index)
int 	clearItems ()
int 	itemCount () const
QCPAbstractItem * 	item (int index) const
QCPAbstractItem * 	item () const
QList< QCPAbstractItem * > 	selectedItems () const
QCPAbstractItem * 	itemAt (const QPointF &pos, bool onlySelectable=false) const
bool 	hasItem (QCPAbstractItem *item) const
QCPLayoutElement * 	layoutElementAt (const QPointF &pos) const

QCPLayer * 	layer (const QString &name) const//QCustomPlot分层的实现与管理
QCPLayer * 	layer (int index) const
QCPLayer * 	currentLayer () const
bool 	setCurrentLayer (const QString &name)
bool 	setCurrentLayer (QCPLayer *layer)
int 	layerCount () const
bool 	addLayer (const QString &name, QCPLayer *otherLayer=0, LayerInsertMode insertMode=limAbove)
bool 	removeLayer (QCPLayer *layer)
bool 	moveLayer (QCPLayer *layer, QCPLayer *otherLayer, LayerInsertMode insertMode=limAbove)

QCPAxisRect * 	axisRect (int index=0) const
QList< QCPAxisRect * > 	axisRects () const
QList< QCPAxis * > 	selectedAxes () const
QList< QCPLegend * > 	selectedLegends () const
int 	axisRectCount () const

bool 	savePdf (const QString &fileName, bool noCosmeticPen=false, int width=0, int height=0, const QString &pdfCreator="", const QString &pdfTitle="")//将图表导出成各种格式
bool 	savePng (const QString &fileName, int width=0, int height=0, double scale=1.0, int quality=-1)
bool 	saveJpg (const QString &fileName, int width=0, int height=0, double scale=1.0, int quality=-1)
bool 	saveBmp (const QString &fileName, int width=0, int height=0, double scale=1.0)
bool 	saveRastered (const QString &fileName, int width, int height, double scale, const char *format, int quality=-1)
QPixmap 	toPixmap (int width=0, int height=0, double scale=1.0)
void 	toPainter (QCPPainter *painter, int width=0, int height=0)

//三个槽
Q_SLOT void 	replot (QCustomPlot::RefreshPriority refreshPriority=QCustomPlot::rpHint)//重新生成图表
Q_SLOT void 	rescaleAxes (bool onlyVisiblePlottables=false)
Q_SLOT void 	deselectAll ()//取消选择


  • 6
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt中,第三方库可以通过静态编译和动态编译两种方式进行使用。 1. 静态编译:静态编译是指将第三方库的代码编译成静态库(.a或.lib文件),并将静态库链接到应用程序中,生成一个单独的可执行文件。这种方式需要在.pro文件中指定要链接的静态库,例如: ``` LIBS += -lmylib ``` 其中,`mylib`是要链接的静态库名字。 静态编译的优点是运行时不需要动态加载第三方库,提高了启动速度和效率。但缺点是可执行文件较大,不易扩展和更新。 2. 动态编译:动态编译是指将第三方库的代码编译成动态库(.dll或.so文件),并在运行时通过libloaderapi函数手动加载动态库,并通过QLibrary类获取动态库中的函数地址,然后直接调用该函数。这种方式需要在代码中显式加载动态库,例如: ``` QLibrary mylib("mylib.dll"); mylib.load(); ``` 然后通过QLibrary的resolve方法获取函数地址,例如: ``` void (*myFunc)() = (void (*)()) mylib.resolve("myFunc"); ``` 其中,`myFunc`是要调用的函数名。 动态编译的优点是灵活性高,可以根据实际需要动态加载和卸载第三方库,便于扩展和更新。但缺点是运行时需要动态加载第三方库,影响了启动速度和效率。 需要注意的是,在使用第三方库时,需要遵循一些规范和最佳实践,以确保正确性和安全性。特别是在获取函数地址时,需要确保函数名的正确性和类型匹配,否则可能导致运行时错误和安全漏洞。同时,在编译和链接时,需要遵循第三方库的使用规范,以确保库文件的正确链接和使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值