一
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();
}
运行结果:
三
编写一个静态库
创建项目:
一直点击,直到完成。
这里的静态库就如同是一个普通的项目