Qt C++ 命名空间
最编程
2024-06-01 21:15:36
...
关于命名空的自定义方法,可见参考资料[1],关于Qt Creator根据*.ui文件生成的ui_xxx.h中的宏QT_BEGIN_NAMESPACE和QT_ENG_NAMESPACE的定义,可见参考资料[3]。下面解析ui_xxx.h文件中最后面的以下内容的含义:
namespace Ui { class MainWindow: public Ui_MainWindow {}; } // namespace Ui
就是在QT_NAMESPACE这个命名空间中,再定义一个子命名空间,里面定义了一个类MainWindow,这个类public继承于Ui_MainWindow,而MainWindow本身没有定义新的成员。
由上面的解析就可以知道,在MainWindow.cpp文件中并没有直接定义Ui_MainWindow这个类对象,而是改为定义Ui命名空间中的MainWindow类的对象!
同时,由于ui_xxx.h文件会被其它源文件所包含,因此不在MainWindow.cpp中直接包含此头文件,避免加长编译时间。取而代之的是,在MainWindow.cpp文件中,再重定义了一个命名空间,并在此命名空间中声明Ui::MainWindow,如下面代码所示:
namespace Ui { class MainWindow; }
原文地址:https://www.cnblogs.com/niuzhihong123-r/p/13472078.html
推荐阅读
-
Qt/C++编写的mqtt调试助手使用说明--二、特点
-
Qt C++ 设计模式->备忘录模式
-
详细解释 Linux 中的命名空间
-
c++11~c++20 内联命名空间
-
C++ 手册]从标准的角度进一步了解命名空间
-
在TypeScript中,探索 generics T、命名空间与装饰器的实际运用
-
QFluentWidgets:专为C++ Qt打造的流畅设计组件集合
-
在K8s多用户环境下,深入理解多级命名空间的组织结构与规则
-
在用户命名空间中,pivot_root操作为何会遭遇EINVAL错误失败情况探析
-
理解Linux网络命名空间:如何让容器访问外部网络及实现多命名空间间的通信(通过veth pair和bridge桥接模式详解)