企业的建站方式,网络营销软件站,做招商加盟做得比较好的网站,郑州淘宝网站推广 汉狮网络目录
一、QT工具
二、QT内存管理
三、信号与槽
1、信号与槽特点
2、信号
3、槽函数
4、连接
5、发送信号
6、取消连接
一、QT工具
1、Qt Designer#xff1a;界面设计编辑工具
2、Qt Assistant: Qt技术文档浏览器
3、Qt Linguist: 国际化语言翻译工具
4、…目录
一、QT工具
二、QT内存管理
三、信号与槽
1、信号与槽特点
2、信号
3、槽函数
4、连接
5、发送信号
6、取消连接
一、QT工具
1、Qt Designer界面设计编辑工具
2、Qt Assistant: Qt技术文档浏览器
3、Qt Linguist: 国际化语言翻译工具
4、Qt Creator: 集成开发环境
二、QT内存管理 使用new和 delete时内存在堆中分配。堆内存空间必须通过delete完全释放以防止内存泄漏。只要不delete分配在堆上的对象可以一直存活下去。 栈是系统自动分配管理的局部变量就是来自于栈区只要超出了作用域的栈区数据就会被自动回收。 所有从QObject继承出来的子对象的内存管理都转移给了父对象 1、使用new在堆上分配内存 2、子对象可自动被父对象删除内存 3、手动删除不会引起二次删除子对象删除时会通知父对象 没有父对象的对象需要手工删除 没有父对象的对象一般分配在栈区这样可以有效避免内存泄漏。 Qt没有自动回收站的机制需要关注父子关系及其功能
在构造对象时候指定父对象 QObject(QObject * parent 0)QObject 可以修改它所属的父对象 void QObject : :setParent(QObject * parent) 得到子对象 QObjectList QObject : :children() 得到父对象 QObject *QObject : : parent () 手工删除有父对象的从QObject继承的子对象 void QObject : :deleteLater() 三、信号与槽
1、信号与槽特点 信号和槽机制是Qt的一个主要特征是Qt与其它工具包最不相同的部分。通过反馈的方式动态地或松散地将事件和状态变化联系起来。 Qt工作的原理:事件驱动信号槽机制。 回调( callback是一个函数指针当一个事件发生时被调用任何函数都可以被安排作为回调。 1、没有类型安全 2、总是以直接调用方式工作 信号和槽的方式更加动态 1、一个更通用的机制 2、更容易互连两个已存在的类 3、相关类之间涉及更少的知识共享 Qt采用信号和槽实现对象部件之间的通信。 能携带任意数量和任意类型的参数,取代原始的回调和消息映射机制 面向对象独立于标准C/C必须借助QT工具moc ( Meta Object Compiler )C预处理程序为高层次事件处理自动生成所需要附加代码必须把事件和相关代码联系起来才能对事件做出响应。才能使不同类型的对象之间能够进行通信
2、信号 当信号被发射时QT代码将回调与其相连接的槽函数 信号将由元对象处理moc自动翻译成C代码 信号的声明不在.cpp文件中而在头文件中 Q_OBJECT ... ...signals: void mySignal(); void mySignal(int x); void mySignalParam(int x, int y); 3、槽函数 槽函数是普通的C成员函数可以被正常调用 槽函数可以有返回值也可以没有。 槽函数的访问权限三种: public slots、private slots和protected slots。槽函数的存取权限决定了谁能够与其相关联头文件中中声明 _OBJECT... . . . public slots: void mySlot(); void mySlot(int x); void mySignalParam(int x,int y) ; 4、连接
原型︰ QMetaObject::Connection QObject::connect(const QObject * senderconst char * signalconst QObject * receiverconstchar * methodQt : :ConnectionType type Qt ::AutoConnection); 槽函数执行方式分为︰自动、直接、队列、阻塞队列等等。
信号与槽关联 QObject::sconnect( senderSIGNAL(signal) , receiverSLOT(method)); 信号与信号相连 QObject::connect( senderSIGNAL(signal)receiverSIGNAL(signal) ); 同一个信号连接到多个槽 QObject ::connect( senderSIGNAL(signal) , receiverSLOT(method1) ) ; QObject::connect( senderSIGNAL(signal) , receiverSLOT(method2) ); 多个信号连接到同一个槽 QObject::connect( senderSIGNAL(signal1), receiverSLOT(method)); QObject ::connect( senderSIGNAL(signal2) , receiverSLOT(method)); 5、发送信号 signal一般是在事件处理时候Qt发出如果需要程序自己触发信号则使用emit。使用语法如下︰
emit signal
6、取消连接 如果不需要连接信号槽的时候可以取消连接。
函数原型有多个版本函数重载︰ bool QObject:.disconnect(const QObject * senderconst char * signalconst QObject * receiverconst char * method) ; 取消一个连接不是很常用因为Qt会在一个对象被删除后自动取消这个对象所包含的所有连接