Qt 是什么

最初由 Trolltech 开发,后来被 Nokia 收购,现在由 The Qt Company 维护。具有以下特点:

  1. 跨平台:支持 Windows 、 macOS 、 Linux 、 iOS 、 Android 和嵌入式系统,通过一次编码,可以在多个平台上编译和运行他们的应用程序
  2. 丰富的 GUI 库, Qt 提供了大量包括按钮、文本框、表格、菜单、对话框等常见 GUI 元素的控件和工具
  3. 信号与槽机制:允许对象之间进行通信,使得事件驱动编程更加容易,实现松耦合的设计
  4. QML 和 Qt Quick :除了传统 C++ 开发, Qt 还提供了 QML ,一种基于 JavaScript 的声明型语言,用户快速开发现代化、动画丰富的用户界面。 Qt Quick 是使用 QML 构件截面的框架
  5. 广泛的功能模块:除了 GUI , Qt 还支持多种其他功能模块,如网络通信、数据库操作、多线程处理、 XML 处理、文件 I/O 操作等,几乎涵盖了所有应用程序开发所需的功能
  6. Qt 以双重许可的形式发布,既有 LGPL/GPL 开源版本,也有商业版本,以满足不同开发者的需求。

PIMPL

PIMPL(Pointer to IMPLementation)惯用法用于实现类的实现隐藏(封装),从而减少类对外部代码的依赖并加快编译时间。 通过将类的具体实现封装在一个私有类中,并使用指针来引用这个实现。PIMPL 常用于库开发,避免暴露不必要的内部实现细节。

PIMPL 的实现步骤

  1. 声明类的接口:在类的头文件中仅声明接口,而将具体实现隐藏在类的实现文件中。
  2. 使用前向声明:通过前向声明类的实现部分,在头文件中不暴露实现的细节。
  3. 定义私有实现类:在源文件中定义私有的实现类,包含类的具体实现细节。
  4. 管理私有实现的指针:在主类中使用 std::unique_ptr 或者 QScopedPointer 来管理私有实现类的指针。