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
新建一个库项目
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(); } |
|
执行结果: |
三
编写一个静态库
创建项目:
一直点击,直到完毕。
这里的静态库就如同是一个普通的项目
6.关于QT中的内存管理,动态的制作,动态库的调用,静态库的制作的更多相关文章
- Cocos2d-x开发中C++内存管理
由于开始并没有介绍C++语言,C++的内存管理当然也没进行任何的说明,为了掌握Cocos2d-x中的内存管理机制,是有必要先了解一些C++内存管理的知识.C++内存管理非常复杂,如果完全地系统地介绍可 ...
- C语言中的内存管理
开始陆续的发一下唐老师视频的笔记吧,顺便带一些正冲哥书的的内容.不能一下都发出来,因为内容发多了自己也受不了,而且发的都是学习视频时候的一些笔记,可能会有一些问题不是很清晰. 先说一下C语言中的内存管 ...
- JNI中的内存管理(转)
源:JNI中的内存管理 JNI 编程简介 JNI,Java Native Interface,是 native code 的编程接口.JNI 使 Java 代码程序可以与 native code 交互 ...
- javascript中的内存管理和垃圾回收
前面的话 不管什么程序语言,内存生命周期基本是一致的:首先,分配需要的内存:然后,使用分配到的内存:最后,释放其内存.而对于第三个步骤,何时释放内存及释放哪些变量的内存,则需要使用垃圾回收机制.本文将 ...
- Python 中的内存管理
Python 中一切皆对象,这些对象的内存都是在运行时动态地在堆中进行分配的,就连 Python 虚拟机使用的栈也是在堆上模拟的.既然一切皆对象,那么在 Python 程序运行过程中对象的创建和释放就 ...
- Unity游戏开发中的内存管理_资料
内存是手游的硬伤——Unity游戏Mono内存管理及泄漏http://wetest.qq.com/lab/view/135.html 深入浅出再谈Unity内存泄漏http://wetest.qq.c ...
- C++中的内存管理
在C++中也是少不了对内存的管理,在C++中只要有new的地方,在写代码的时候都要想着delete. new分配的时堆内存,在函数结束的时候不会自动释放,如果不delete我分配的堆内存,则会造成内存 ...
- cocos2dx中的内存管理机制及引用计数
1.内存管理的两大策略: 谁申请,谁释放原则(类似于,谁污染了内存,最后由谁来清理内存)--------->适用于过程性函数 引用计数原则(创建时,引用数为1,每引用一次,计数加1,调用结束时, ...
- php中的内存管理的介绍(转)
本篇文章给大家带来的内容是关于php中的内存管理的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 一.php内存管理概述——Zend引擎 由于计算机的内存由操作系统进行管理,所以 ...
随机推荐
- JY01-KX-01
复习: 1.a标签跳转 <p id="地址"></p> <a href="#地址"></a> 预习: 1.out ...
- linux的comm命令
http://blog.csdn.net/apache6/article/details/5789669
- Xml序列化自引用/循环引用问题1
1.定义类 public class Student { public int ID { get; set; } public string Name { get; set; } //[XmlIgno ...
- php遍历数据库
数据库 <?php mysql_connect("localhost","root",""); mysql_set_charset(& ...
- Oracle 错误码
Oracle作为一款比较优秀同时也比较难以掌握的大型数据库,在我们学习使用的过程中,不可避免的会遇到一些错误,为此 Oracle 给出了一套完备的错误消息提示机制 我们可以根据Oracle给出的消息提 ...
- PHP判断文章里是否有图片
用preg_match来检查内容里是否有匹配的“<img”,其实我们还用preg_match来判断很多东西,比如邮箱地址里是否有“@”等,下面用一小段代码来演示具体用法. $content=&q ...
- 生产环境搭建MySQL复制的教程(转)
[导读] 网络上有很多关于MySQL复制搭建的步骤和范例,以及手册上有一章完整的篇幅,讲述MySQL复制的原理.搭建步骤.优化等,但依然存在很多刚开始学习MySQL知识或者刚进入DBA行业的朋友咨询, ...
- Windows 批处理文件
窗口自动关闭:批处理文件执行完之后,窗口会自动关闭,若想执行完之后,窗口不自动关闭的话,在文件末尾添加1. 批处理文件执行完之后,窗口会自动关闭2. 若想执行完之后,窗口不自动关闭的话,在文件末尾添加 ...
- android中使用PopupWindow实现弹出窗口菜单
结合上篇android中使用ViewPager实现图片拖动,我们实现了点击“帮助”按钮的功能,这一篇则是接着上一篇,让我们一起来完成“我的”按钮的功能,这一功能,则是使用PopupWindow来实现弹 ...
- android数据保存
永久保存数据的方法:1.Shared Preferences 以键值对的形式存储基本数据类型( booleans, floats, ints, longs, and strings),存储的数据在限制 ...