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