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 <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(); } |
| 運行結果:
|
?
三? 編寫一個靜態庫
創建項目:
一直點擊,直到完成。
這里的靜態庫就如同是一個普通的項目
?
總結
以上是生活随笔為你收集整理的6.关于QT中的内存管理,动态的制作,动态库的调用,静态库的制作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 5.关于QT中的网络编程,QTcpSoc
- 下一篇: 为什么打仗 探究战争的本质和背后的原因?