• Qt 编程中 namespace Ui { class Widget; } 解析


    class Widget 里面有个声明 Ui::Widget *ui,这个 ui 是使用 namespace Ui 里的 Widget 类声明的,该类只是简单的继承了 ui_widget.h 里的 Ui_Widget 类(没有添加任何成员)。现在就很清楚了,这两个看起来名字一样的 Widget 其实是两个类,一个是 namespace Ui 里的,另一个是 namespace Ui 之外的 Widget 类,namespace 声明的类其实就是个空壳,它的基类功能是将此窗口上的所有控件的声明、实例化、初始化。声明的原因就是为了使 ui 布局控制和其他的控制代码分离。

    用一段 C++ 代码来说明这一切:

    test.h 文件内容:

    #ifndef _TEST_H_
    #define _TEST_H_
    
    #include <iostream>
    
    class Test{
    public:
    	void display(){
    		std::cout << "This is a test!(no namespace)" << std::endl;
    	}
    };
    
    class Base{
    public:
    	void display(){
    		std::cout << "This is a test!(namespace)" << std::endl;
    	}
    };
    
    /* 使用 namespace 声明 */
    namespace UI {
    	class Test: public Base {};
    }
    
    #endif
    

    main.cpp 文件内容:

    #include "test.h"
    
    int main()
    {
    	Test t;
    	UI::Test tt;
    	
    	t.display();
    	tt.display();
    	
    	return 0;
    }
    

    运行结果:

  • 相关阅读:
    冒泡排序
    跑马(行转列,列转行)
    选择排序
    day06-迭代器
    day05-装饰器作业
    day07-生成器
    day08-内置函数和匿名函数
    day09-正侧表达式
    144-SpringBoot的编码问题?
    143-SprinBoot如何使用Servlet?
  • 原文地址:https://www.cnblogs.com/GyForever1004/p/9043839.html
Copyright © 2020-2023  润新知