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

简介:

一 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

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

T14Library::T14Library()
{
}

void T14Library::Encrypt()
{

qDebug() << "Encrypt";

}
点击构建button:

到项目文件夹E:QTbuild-T14Library-Desktop_Qt_5_3_MinGW_32bit-Debugdebug下查看:

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:QTbuild-T14Library-Desktop_Qt_5_3_MinGW_32bit-Debugdebug -lT14Library
main.cpp

include

include "../T14Library/T14Library.h"

int main(int argc,char *argv[])
{

QCoreApplication app(argc,argv);

T14Library d;
d.Encrypt();

app.exec();

}
执行结果:

三 编写一个静态库
创建项目:

一直点击,直到完毕。
这里的静态库就如同是一个普通的项目

本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5269529.html,如需转载请自行联系原作者

相关文章
|
1月前
|
程序员 C语言
C语言库函数 — 内存函数(含模拟实现内存函数)
C语言库函数 — 内存函数(含模拟实现内存函数)
33 0
|
2月前
|
C语言
模拟实现C语言中经典库函数,字符相关的函数与内存相关的函数
模拟实现C语言中经典库函数,字符相关的函数与内存相关的函数
模拟实现C语言中经典库函数,字符相关的函数与内存相关的函数
|
6月前
|
Oracle 关系型数据库 Linux
解决在linux服务器上部署定时自动查找cpu,内存,磁盘使用量,并将查询结果写入数据库的脚本,只能手动运行实现插库操作
问题描述:将脚本名命名为mortior.sh(以下简称mo),手动执行脚本后查询数据库,表中有相应的信息,放入自动执行队列中,脚本被执行,但是查询数据库,并没有新增数据。
46 0
|
7月前
|
C语言
【进阶C语言】字符串与内存库函数认识与模拟实现(1)
size_t为无符号整形,接受他的返回值的变量类型也应该为size_t 函数参数就是字符指针类型。const为了修饰*str,防止原字符串的数据被修改。 需要包含的头文件为:#include&lt;string.h&gt;
29 0
|
1月前
|
编解码
qt中使用dll库的方法
qt中使用dll库的方法
20 2
|
1月前
|
存储
Qt更新组件出现(“要继续此操作,至少需要一个有效且已启用的储存库”)
Qt更新组件出现(“要继续此操作,至少需要一个有效且已启用的储存库”)
Qt更新组件出现(“要继续此操作,至少需要一个有效且已启用的储存库”)
|
1月前
|
编译器
正点原子IMX6ULL-安装交叉编译器、编译tslib触摸屏库、编译arm环境qt源代码
正点原子IMX6ULL-安装交叉编译器、编译tslib触摸屏库、编译arm环境qt源代码
|
2月前
|
Java 程序员 测试技术
【Qt底层之内存管理机制】Qt 对象 父子关系、运行时机制与高效编程技巧
【Qt底层之内存管理机制】Qt 对象 父子关系、运行时机制与高效编程技巧
124 2
|
2月前
|
算法 API C++
Qt框架与STL库之间的巅峰对决:差异、优缺点及适用场景
Qt框架与STL库之间的巅峰对决:差异、优缺点及适用场景
160 0
|
7月前
|
存储 编译器 C语言
【进阶C语言】字符串与内存库函数认识与模拟实现(2)
size_t为无符号整形,接受他的返回值的变量类型也应该为size_t 函数参数就是字符指针类型。const为了修饰*str,防止原字符串的数据被修改。 需要包含的头文件为:#include&lt;string.h&gt;
48 0