一 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,如需转载请自行联系原作者