• QT:QObject 简单介绍


    QObject 是所有Qt对象的基类。

    QObject 是Qt模块的核心。它的最主要特征是关于对象间无缝通信的机制:信号与槽。使用connect()建立信号到槽的连接,使用disconnect()销毁连接,使用blockSignals()暂时阻塞信号以避免无限通知循环,使用connectNotify()和disconnectNotify()追踪连接。

    QObject 以对象树的形式组织起来。当为一个对象创建子对象时,子对象会自动地添加到父对象的children()列表中。父对象拥有子对象的所有权,比如父对象可以在自己的析构函数中删除它的孩子对象。使用findChild()或findChildren()通过名字和类型查询孩子对象。

    每个对象都有objectName(),也可以通过metaObject()获得它的类名。可以使用inherits()检测对象的类是否在某个类的继承层次结构中。

    对象被删除时,发射destroyed()信号,捕捉这个信号以免悬挂对这个对象的引用。

    QObject 通过event()接收事件,通过installEventFilter()和enventFilter()过滤来自其他对象的事件。childEvent()可以捕捉来自子对象的事件。

    QTimer可以实现高水平的定时器。

    宏Q_OBJECT是任何实现信号、槽或属性的强制性要求。不管是否需要实现这些机制,都要求使用这个宏。否则会引发一些函数的奇怪行为。

    所有的Qt部件都继承自QObject 。函数isWidgetType()检测对象是否一个部件。它比以下这些语句要运行得更快:qobject_cast(obj) 或者obj->inherits("QWidget")。

    children()返回QObjectList,它是QList的typedef。



    没有复制构造函数和赋值操作符

    QObject 既没有复制构造函数也没有赋值操作符。实际上它们使用宏Q_DISABLE_COPY()声明在私有部份。所有派生自QObject 的对象都使用这个宏声明复制构造函数和赋值操作符为私有

    这样的主要结果是,在使用QObject子对象作为值的地方要使用QObject类型的指针因为没有构造函数,你不能把QObject 的子对象作为值存储在容器类中,必须存储它的指针

    自动连接

    Qt的元对象系统自动地为QObject 的子类和他们的对象建立信号和槽的连接。只要有名字的对象被定义,槽就会自动拥有简单的约定命名,连接在运行时间通过函数QMetaObject::connectSlotsByName()执行。

    国际化

    所有的 QObject 支持Qt的转换特性。能够使用户界面在不同语言间进行转换。为了将用户可见的文本得到转换,必须将它们包裹到函数tr()中。

    转自:http://blog.chinaunix.net/uid-374124-id-4121508.html

  • 相关阅读:
    PHPMailer邮件发送
    php 统计在线人数,今日访问量,总访问量
    php 首页定时生成静态页面
    jquery自动生成二维码
    php图片等比例缩放
    判断checkbox选中
    Pojo和JavaBean的区别
    Highcharts简单入门
    [转载]了解Activity工作流
    集群和分布式初探
  • 原文地址:https://www.cnblogs.com/liushui-sky/p/6549387.html
Copyright © 2020-2023  润新知