QT 官方QObject对象翻译要点(纯属个人翻译,不靠谱)

简介: QT 官方QObject对象翻译要点(纯属个人翻译,不靠谱)

QObject 对象翻译要点

1 .信号机制

2.可以根据类型或者对象名称查询对象的子对象,父对象删除时,其子对象被自动删除和调用析构函数

3.对象名称(objectName)和className(通过元对象系统获取)

4,通过inherits()可以判断一个对象是否继承于某个类和是否时该类的一个对象

5.当对象被删除时,会发送一个destoryed()信号,我们可以捕获这个信号避免对象悬空

6.对象通过event()获取事件,并决定是否应该处理该事件(子对象可以重写该函数,实现自己的处理逻辑),使用eventFilter()函数过滤其他控件的事件(其他控件要添加控件事件过滤器-installEventFilter()).childEvent()能够捕捉子类控件的事件

7.定时器功能(QTimer)

8.对于实现信号,插槽或属性的任何对象,Q_OBJECT宏都是必需的。 您还需要在源文件上运行Meta Object Compiler。 我们强烈建议在QObject的所有子类中都使用此宏,而不管它们是否实际使用信号,插槽和属性,因为不这样做可能会导致某些函数表现出奇怪的行为。

9.所有widget都是继承QObject, 便利函数 isWidgetType()比qobject_cast<QWidget *>(obj) or obj->inherits(“QWidget”)快的多

10.通常,一个对象可以接受其他线程发送的信号或者事件,对象对应的槽函数和事件处理将在对象所在的线程中执行,然而如果该对象不具有线程亲缘(Thread Affinity)关系,或者不具有事件处理循环(没有继承QObject),则不能接受相应的信号或者事件。

11 .可以使用thread()查看对象所在的线程,使用moveToThread()可以改变对象所在的线程。

12.所有QObject必须与父对象代驻留在同一线程中。 所以:

如果两个QObject位于不同的线程中,则setParent()将失败。当一个QObject移到另一个线程时,它的所有子对象也将被自动移动。如果QObject有一个父对象,则moveToThread()将失败。

如果QObject是在QThread :: run()中创建的,则它们不能成为QThread对象的子级,因为QThread不在调用QThread :: run()的线程中。

注意:QObject的成员变量不会自动成为其子级。 必须通过将指针传递给孩子的构造函数或通过调用setParent()来设置父子关系。 如果没有此步骤,则在调用moveToThread()时,对象的成员变量将保留在旧线程中。

13.QObject和其子类没有拷贝赋值和拷贝构造(实际上时是私有函数),因此,一般如果要多处地方使用该对象,一般都时使用指针。

14.信号与槽是自动连接的

14.动态属性(可以动态判断一些控件或者获取控件的一些属性值)

15.国际化

a.使用QString(用户可见时)

b.“程序员空间”中的字符串(例如QObject名称和文件格式文本)不需要使用QString; 传统的char *或QByteArray类就足够了。

c.对所有文字使用tr()


相关文章
|
6月前
|
存储 数据安全/隐私保护 C++
Qt 中文文档 Qt5.15 PDF Class (从官网Qt 5.15 翻译)
Qt 中文文档 Qt5.15 PDF Class (从官网Qt 5.15 翻译)
463 0
|
6月前
|
XML 自然语言处理 数据格式
Qt国际化翻译解决方案
Qt国际化翻译解决方案
141 0
|
C++
Qt 父子对象的关系
Qt 父子对象的关系
106 0
|
6月前
|
程序员 编译器 C++
【深入探究Qt内部架构】QObject、事件循环与Q_OBJECT宏的协同作用(一)
【深入探究Qt内部架构】QObject、事件循环与Q_OBJECT宏的协同作用
172 0
|
2月前
|
设计模式 前端开发 安全
Qt注册类对象单例与单类型区别
在进行开发时,应当根据具体的应用场景和需求来选择使用单例模式或是单类型。如果是全局服务或状态管理,可能需要单例模式;如果是为了使QML环境下的不同组件能够访问到同一个后端服务对象,则可能需要使用单类型。
36 2
|
5月前
|
编译器 C++
(10)Qt对象模型
(10)Qt对象模型
|
5月前
|
前端开发
自定义QT QWidget对象响应弹出菜单的解决方法
自定义QT QWidget对象响应弹出菜单的解决方法
85 1
|
5月前
|
存储 数据安全/隐私保护
Qt Installer Framework翻译(5-3)
Qt Installer Framework翻译(5-3)
|
6月前
|
Java 程序员 测试技术
【Qt底层之内存管理机制】Qt 对象 父子关系、运行时机制与高效编程技巧
【Qt底层之内存管理机制】Qt 对象 父子关系、运行时机制与高效编程技巧
351 2
|
6月前
|
设计模式 开发框架 编译器
【深入探究Qt内部架构】QObject、事件循环与Q_OBJECT宏的协同作用(二)
【深入探究Qt内部架构】QObject、事件循环与Q_OBJECT宏的协同作用
214 0