6.关于QT中的内存管理,动态的制作,动态库的调用,静态库的制作

简介:  一  QT的内存管理 1  QT中的内存管理是QObject来管理的 2  QT中的内存管理没有cocos2dx中的引用计数 3  组件可以指定父对象 QTimer *timer = QTimer(this);   //这里的this实际上强制转换成为了QObject了。 4  每一个对象都有一个deleteLater()方法,


  QT的内存管理

1  QT中的内存管理是QObject来管理的

2  QT中的内存管理没有cocos2dx中的引用计数

3  组件可以指定父对象

QTimer *timer = QTimer(this);   //这里的this实际上强制转换成为了QObject了。

4  每一个对象都有一个deleteLater()方法,

QLineEdit* edit = new QLineEdit(this);

 

delete edit;   //这里的delete马上调用析构函数对内存进行释放

Edit->deleteLater();   deleteLater不是马上释放的,而是发送了一个消息,缓一下,等下一个消息来的时候释放,这种方式是延时释放。

 

  QT中制作动态库

A  新建一个库项目

项目目录结构如下:

编写代码

t14library_global.h

#ifndef T14LIBRARY_GLOBAL_H
#define T14LIBRARY_GLOBAL_H
 
#include <QtCore/qglobal.h>
 
#if defined(T14LIBRARY_LIBRARY)
#  define T14LIBRARYSHARED_EXPORT Q_DECL_EXPORT
#else
#  define T14LIBRARYSHARED_EXPORT Q_DECL_IMPORT
#endif
 
#endif // T14LIBRARY_GLOBAL_H

T14Library.h

#ifndef T14LIBRARY_H

#define T14LIBRARY_H

 

#include "t14library_global.h"

 

/*这里的T14LIBRARYSHARED_EXPORT就是用来做跨平台的一个宏*/

class T14LIBRARYSHARED_EXPORT T14Library

{

 

public:

    T14Library();

 

    //自己编写的函数

    void Encrypt();

};

 

#endif // T14LIBRARY_H

T14Library.cpp

#include "T14Library.h"
#include <QDebug>
 
T14Library::T14Library()
{
}
 
void T14Library::Encrypt()
{
    qDebug() << "Encrypt";
}

点击构建按钮:

到项目目录E:\QT\build-T14Library-Desktop_Qt_5_3_MinGW_32bit-Debug\debug下查看:

B  添加一个空QT项目来使用QT

编写的代码如下:

T15UseLibrary.pro

SOURCES += \
    main.cpp
 
#如果QT mingw版本,使用动态库方式和Linux没区别(-L,-l)
#如果QT VS版本。。。使用动态库方式和windows没区别
#如果QT mingw版本,要调用VC写的动态库,使用一个工具,生成libXXXXXX.文件
# 注意-L后面是dll所在的文件夹路径,-l后面表示的是动态库的名字
LIBS += -LE:\QT\build-T14Library-Desktop_Qt_5_3_MinGW_32bit-Debug\debug -lT14Library

main.cpp

#include <QCoreApplication>
 
#include "../T14Library/T14Library.h"
 
int main(int argc,char *argv[])
{
    QCoreApplication app(argc,argv);
 
    T14Library d;
    d.Encrypt();
 
    app.exec();
}

运行结果:

 

  编写一个静态库

创建项目:

一直点击,直到完成。

这里的静态库就如同是一个普通的项目

 

目录
相关文章
|
13天前
|
程序员 C语言
C语言库函数 — 内存函数(含模拟实现内存函数)
C语言库函数 — 内存函数(含模拟实现内存函数)
24 0
|
1月前
|
C语言
模拟实现C语言中经典库函数,字符相关的函数与内存相关的函数
模拟实现C语言中经典库函数,字符相关的函数与内存相关的函数
模拟实现C语言中经典库函数,字符相关的函数与内存相关的函数
|
5月前
|
Oracle 关系型数据库 Linux
解决在linux服务器上部署定时自动查找cpu,内存,磁盘使用量,并将查询结果写入数据库的脚本,只能手动运行实现插库操作
问题描述:将脚本名命名为mortior.sh(以下简称mo),手动执行脚本后查询数据库,表中有相应的信息,放入自动执行队列中,脚本被执行,但是查询数据库,并没有新增数据。
43 0
|
6月前
|
C语言
【进阶C语言】字符串与内存库函数认识与模拟实现(1)
size_t为无符号整形,接受他的返回值的变量类型也应该为size_t 函数参数就是字符指针类型。const为了修饰*str,防止原字符串的数据被修改。 需要包含的头文件为:#include&lt;string.h&gt;
27 0
|
21天前
|
编解码
qt中使用dll库的方法
qt中使用dll库的方法
14 2
|
22天前
|
存储
Qt更新组件出现(“要继续此操作,至少需要一个有效且已启用的储存库”)
Qt更新组件出现(“要继续此操作,至少需要一个有效且已启用的储存库”)
Qt更新组件出现(“要继续此操作,至少需要一个有效且已启用的储存库”)
|
1月前
|
算法 API C++
Qt框架与STL库之间的巅峰对决:差异、优缺点及适用场景
Qt框架与STL库之间的巅峰对决:差异、优缺点及适用场景
118 0
|
2月前
|
存储 缓存 算法
Golang高性能内存缓存库BigCache设计与分析
【2月更文挑战第4天】分析Golang高性能内存缓存库BigCache设计
70 0
|
6月前
|
存储 编译器 C语言
【进阶C语言】字符串与内存库函数认识与模拟实现(2)
size_t为无符号整形,接受他的返回值的变量类型也应该为size_t 函数参数就是字符指针类型。const为了修饰*str,防止原字符串的数据被修改。 需要包含的头文件为:#include&lt;string.h&gt;
48 0
|
4月前
|
存储 JSON JavaScript
[Qt5] QJson库进行存储、加载数据
[Qt5] QJson库进行存储、加载数据
21 0

热门文章

最新文章