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;
}

运行结果:


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM