此鏈接:http://doc.trolltech.com/4.5/moc.html#moc說Q_OBJECT宏和元對象代碼
交通部工具讀取一個C++頭文件。 如果它發現一個或多個包含Q_OBJECT 宏的類 聲明,它會生成包含這些類的元對象代碼 的C++源文件 。
什麼是元對象代碼?
編輯1
如何知道在哪個班,我應該寫Q_OBJECT?一個例子是信號和插槽,需要使用的其他任何情況?
此鏈接:http://doc.trolltech.com/4.5/moc.html#moc說Q_OBJECT宏和元對象代碼
交通部工具讀取一個C++頭文件。 如果它發現一個或多個包含Q_OBJECT 宏的類 聲明,它會生成包含這些類的元對象代碼 的C++源文件 。
什麼是元對象代碼?
編輯1
如何知道在哪個班,我應該寫Q_OBJECT?一個例子是信號和插槽,需要使用的其他任何情況?
元對象通過創建新的或操縱現有對象來增強編程語言。它們提供語言實際上並不具有的功能。元對象可以通過編譯時或運行時解釋。在Qt和C++中,它是在編譯期間由Meta Object Compiler(moc)完成的。
一個例子是信號/插槽概念的用法。
您可以閱讀文章Qt internals and Reversing以深入瞭解Qt及其moc編譯器(meta objet編譯器)。總之,一個元對象是由Qt的moc編譯器創建的,爲信號/插槽機制等類添加額外信息。
感謝您的鏈接,我會讀。但我只想要2或3行解釋「元對象」的含義。 – 2011-05-03 07:33:51
Qt環境中的元對象代碼是一個C++源文件,它是C++源代碼的擴展版本文件,你已經把Q_OBJECT(和/或其他相關的宏)。元對象代碼將實現您的實現以及一些其他額外(元)代碼,以便信號和插槽機制起作用。
元對象包含有關對象的元信息,如名稱和其信號和插槽的文本描述。這可以通過「名稱」呼叫信號。請參閱有關QMetaObject和article的文檔。
感謝您的回答。請在Donotalo的帖子中看到我的評論。 – 2011-05-03 07:36:10
知道事情如何運作總是很好的。程序員不關心他們的代碼下面發生了什麼,他們是更糟糕的程序員。但是,是的,MOC允許您使用功能,而無需自己實施它們,因此您可以集中精力正確使用它們,而不是先讓它們工作。 – Exa 2011-05-03 07:42:28