我是靠谱客的博主 土豪香水,最近开发中收集的这篇文章主要介绍QT基础篇,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.元对象系统

:基于标准C++ 扩展,很多 的扩展,最经典的信号与槽

什么是元对象 meta-Object System

元对象系统是一个基于标准C++的扩展,为Qt提供了信号与槽机制、实时类型信息、动态属性系统。

元对象系统的三个基本条件:类必须继承自QObject、类声明Q_OBJECT宏(默认私有有)、元对象编译

器moc。        

Q_OBJECT Qobject Qobject Q_OBJECt

信号和槽机制是 QT 的核心机制,QT自定义一种机制,他独立与标准 C/C++语言

使用信号与曹,还要借助moc(Meta-Object Compiler)也就是元对象编译器,他为高层次的时间处理自动生成所需的必要代码。Qt程序在交由标准编译之前先要使用moc分析源文件,要是找到了宏Q_OBJECT,就会

QMetaobject

则会生成以moc_className.cpp(自定义类名)的.cpp文件

新的文件同样将进入编译系统,与原文件一起参与编译。

构建生成的.o文件包含moc生成的cpp文件。

所以,QObject之所以为元对象系统的基类,因其提供了元对象系统很多支持工作:

信号与槽、事件处理、属性设置、国际化支持(翻译)、对象树资源管理等等。

使用QObject作为基类而不使用Q_OBJECT宏和元对象代码是可以的,但是如果Q_OBJECT宏没有被使用,那么这个类声明的信号和槽,以及其他特征描述都不会被调用。

元对象系统除实现信号与槽外,还有很多其他特性,比如:        

QObject::metaObject()返回与该类绑定的meta-object对象。

QMetaObject::className()可以在运行时以字符串的形式返回类的名字,不需要C++编译器原生的运行时类型信息(RTTI)的支持。

QObject::inherits()函数返回继承信息:对象是否是QObject继承树上一个类的实例。

QObject::tr()和QObject::trUtf8()提供国际化支持,将字符串翻译成指定的语言。

QObject::setProperty()和QObject::property()通过名字动态设置和获取对象属性。

QMetaObject::newInstance()构造该类的一个新实例。

        qObject_cast()动态类型转换。

一般建议在QObject的所有子类中使用Q_OBJECT宏,而不管它们是否使用了信号与槽。

Qt-Metacas 元子

Moc-examdialog会参与到我们的编译汇编之中,他也会生成相应的目标文件 这个吗目标文件会和examdialog和对话框文件链接最后生成可执行的文件

信号与曹就是元对象

Q-QObject对元的对象操作有所支持

 

 

 

联系方式:QQ:31795882

最后

以上就是土豪香水为你收集整理的QT基础篇的全部内容,希望文章能够帮你解决QT基础篇所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部