一
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
新建一个库项目
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
项目文件夹结构例如以下:
编写代码
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 #define #include /*这里的T14LIBRARYSHARED_EXPORT就是用来做跨平台的一个宏*/ class { public: T14Library(); //自己编写的函数 void }; #endif |
T14Library.cpp |
#include "T14Library.h" #include <QDebug> T14Library::T14Library() { } void T14Library::Encrypt() { qDebug() << "Encrypt"; } |
点击构建button: 到项目文件夹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(); } |
执行结果: |
三
编写一个静态库
创建项目:
一直点击,直到完毕。
这里的静态库就如同是一个普通的项目