日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt文档阅读笔记-moc工具使用及其理论(moc工具如何添加到makefile中)

發布時間:2025/3/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt文档阅读笔记-moc工具使用及其理论(moc工具如何添加到makefile中) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

moc(Meta-Object?Compiler):用于處理Qt中關于C++的擴展。

moc工具讀取C++頭文件,看看這個頭文件里面的類是不是包含Q_OBJECT宏,它會將這個頭文件,轉換為帶有meta-object代碼的.cpp文件。meta-object依賴信號與槽、RTTI、屬性系統。

?

moc把.h文件生成的.cpp文件是參加編譯和鏈接的。

用法

moc一般用法如下:

class MyClass : public QObject {Q_OBJECTpublic:MyClass(QObject *parent = 0);~MyClass();signals:void mySignal();public slots:void mySlot(); };

moc通常實例對象屬性,如下的例子。Q_PROPERTY()宏聲明了一個對象屬性,Q_ENUMS()聲明了枚舉類型,這些都可以在屬性系統中使用寫個QML界面,C++后端處理的同志們應該對這些不陌生。

如下面這個例子:

class MyClass : public QObject {Q_OBJECTQ_PROPERTY(Priority priority READ priority WRITE setPriority)Q_ENUMS(Priority)public:enum Priority { High, Low, VeryHigh, VeryLow };MyClass(QObject *parent = 0);~MyClass();void setPriority(Priority priority) { m_priority = priority; }Priority priority() const { return m_priority; }private:Priority m_priority; };

Q_CLASSINFO()宏,可以附加name/value在這個類的meta-object上,如下:

class MyClass : public QObject {Q_OBJECTQ_CLASSINFO("Author", "Oscar Peterson")Q_CLASSINFO("Status", "Active")public:MyClass(QObject *parent = 0);~MyClass(); };

moc工具將會把mysqlClass.h轉換為moc_myclass.cpp。將會參與程序編譯的過程。

?

如何在makefile中添加moc相關代碼

官方推薦使用qmake生成makefile。

如果自己創建的makefile下面是包含moc處理的一點小建議:

如果是使用GNUmake,參考下面的代碼:

moc_%.cpp: %.hmoc $(DEFINES) $(INCPATH) $< -o $@

簡便寫法,可以參考下面的代碼:

moc_foo.cpp: foo.hmoc $(DEFINES) $(INCPATH) $< -o $@

還需要把moc_foo.cpp加到SOURCES中,以及moc_foo.o和moc_foo.obj在OBJECTS中。

?

命令選項

?

這里只提下?-o?后面是文件名

?

?

下面是個人對這個moc的用法,主要是修改makefile,非qmake生成makefile

?

?

原因是這樣的,公司里面好些大佬,都是老一輩的程序員。從0幾年都開始用Qt了,當時在linux上使用pro還不是很普及,都喜歡搞makefile文件,這樣我們這些新人維護起來就困難了。 在此閱讀了下Qtmoc相關的文檔,已對makefile進行了成功修改,在此記錄下: 這里關于Qt的環境變量都是設置好的,在此不再介紹 在makefile文件中添加: moc_%.cpp:%.hmoc %< -o $@

意思是將moc 所有.h -o moc_對應文件名.cpp

$<為匹配%.h,$@為匹配到moc_%.cpp。

這樣就不用一個一個對響應的Qt類進行操作了,使用Makefile腳本進行操作。

然后記得添加好其中的.o文件:

.cpp文件會編譯成對應的.o文件。

最后make下,可以看到成功解析了Qt類。還自動把moc相關的刪除了,挺人性化的

感覺程序員這行不容易啊,每天都是啃文檔,知識儲備,然后解決問題。

唉!!!

總結

以上是生活随笔為你收集整理的Qt文档阅读笔记-moc工具使用及其理论(moc工具如何添加到makefile中)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线观看av免费 | 国产视频在线一区 | 国产精品天堂 | 久久久久五月 | 4色av| 久久东京| 国产成人无码www免费视频播放 | 国内精品人妻无码久久久影院蜜桃 | 中日韩精品视频 | 四虎影视www在线播放 | 麻豆一二三区 | 亚洲熟区| 91亚洲欧美| 亚洲成人va | 国产欧美一区二区精品性色 | 凹凸精品一区二区三区 | 亚洲精品一区二区三 | 日本午夜一区二区三区 | 69中国xxxxxxxxx69 国产又爽又色 | 日本深夜福利 | 久久久亚洲av波多野结衣 | 人人澡人人干 | 欧美黄色a级 | 国产a级片| 久久久久人妻一道无码AV | 免费在线观看污 | 久草美女| 亚洲一区影院 | 国产精品一卡二卡 | 2019天天干天天操 | 91狠狠综合 | 超碰操| 男男做的视频 | 午夜高潮视频 | 无遮挡aaaaa大片免费看 | 40到50岁中老年妇女毛片 | 黄色国产一区 | 国产精品无码中文字幕 | 久久久久久久久久久久久女国产乱 | 69av一区二区三区 | 成人国产精品免费观看视频 | 亚洲一区精品视频 | 在线免费观看av的网站 | 亚洲精品1区2区3区 国产丝袜网站 | 99国产视频在线 | 俺也去五月婷婷 | 四虎精品永久在线 | 蜜桃精品视频 | 超碰在线日韩 | 国产精品91久久久 | 美足av电影 | 色视屏 | 黄色a级网站 | 中文字幕一区二区在线播放 | 久草观看视频 | 黄色一级片在线免费观看 | 日韩欧美视频免费在线观看 | 正在播放国产精品 | 亚洲第九十九页 | www.久热| 韩国无码av片在线观看网站 | 天天操中文字幕 | 黄色网址你懂的 | 九九视频免费在线观看 | 国产精品综合一区二区 | 久久久无码18禁高潮喷水 | 美女干b视频 | 亚洲一区二区乱码 | 国产三级精品在线 | 97公开免费视频 | 国产剧情久久久 | 最新av免费在线观看 | 狠狠干在线视频 | 亚洲两性视频 | 99热伊人| 国产伊人一区 | 日韩在线高清视频 | yy1111111| 亚洲av无码一区二区乱孑伦as | 深田咏美中文字幕 | 在线看片你懂得 | 一本色道综合久久欧美日韩精品 | 91精品国自产 | 美女十八毛片 | 伊人av综合 | 久草香蕉在线 | 亚洲一区欧美二区 | 国产精品欧美激情 | 国产无套在线观看 | 国产一区二区久久精品 | 国产精品无码在线播放 | 成人激情综合网 | 国产成人精品久久久 | 亚洲精品国产美女 | 网站黄色在线观看 | 尤物视频在线观看免费 | 免费国产a | 久久久香蕉网 | 人妖ts福利视频一二三区 |