pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

為什么包含“.moc"很重要?Qt 源代碼文件末尾的

Why is important to include quot;.mocquot; file at end of a Qt Source code file?(為什么包含“.moc很重要?Qt 源代碼文件末尾的文件?)
本文介紹了為什么包含“.moc"很重要?Qt 源代碼文件末尾的文件?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

問題描述

為什么在 Qt cpp 源代碼中為 .moc 文件添加一個包含很重要?

Why is it important to add an include for .moc file in a Qt cpp source code?

這是幾個Qt示例中常用的步驟,包括這個:http://doc.qt.io/qt-5/qttestlib-tutorial1-example.html; 其中行 #include "testqstring.moc" 應(yīng)該包含在文件的末尾.

This is a common step used in several Qt samples, including this one: http://doc.qt.io/qt-5/qttestlib-tutorial1-example.html; where the line #include "testqstring.moc" should be included in the end of the file.

我不明白為什么這是必要的.

I don't understand exactly why this is necessary.

推薦答案

如果您在 中使用 Q_OBJECT 宏定義 QObject 子類,則這是必要的.cpp 文件.這樣做時:

It's necessary if you define QObject subclasses with the Q_OBJECT macro in a .cpp file. When you do so:

  1. qmake 必須在您的 Makefile 中生成規(guī)則以在該 .cpp 上調(diào)用 moc> 文件.

  1. qmake must generate rules inside your Makefile to invoke moc on that .cpp file.

那個特殊的(hackish?)包含會觸發(fā) qmake 這樣做,并告訴它哪個將是 moc 的輸出文件 (teststring.moc) 在您的 .cpp 上調(diào)用時.

That special (hackish?) inclusion triggers qmake to do so, and tells it which would be moc's output file (teststring.moc) when invoked on your .cpp.

為了編譯moc的輸出(仍然是一堆C++代碼),編譯器必須看到你的類定義.否則,它會抱怨沒有諸如 YourClass::staticMetaObject 之類的東西,因為它不知道 YourClass 存在.

In order to compile moc's output (which is still a bunch of C++ code) the compiler must see your class definition. Otherwise, it will complain that there's no such thing as YourClass::staticMetaObject and similar, because it has no idea that YourClass exists.

通常在頭文件中定義具有 Q_OBJECT 的類.moc 然后在其生成的輸出中添加一個 #include "header.h",這意味著 moc 的輸出可以被愉快地編譯.

Typically one defines classes featuring Q_OBJECT in a header file. moc then adds a #include "header.h" into its generated output, and this means moc's output can be happily compiled.

但是如果您的類定義在 .cpp 中呢?您不能在 moc 的輸出中 #include 一個 .cpp 文件,因為這會給您帶來大量的重新定義錯誤.

But what if your class definition is inside a .cpp? You can't #include a .cpp file in moc's output, as that would give you tons of redefinition errors.

相反,您將#include moc 的輸出放在.cpp 中,以便將其編譯在一起,每個人都很高興.(這意味著 qmake 只會發(fā)出一個規(guī)則,說運行 moc,而不是另一個規(guī)則告訴編譯器編譯 moc 的輸出.)

Instead, you #include moc's output in your .cpp, so that it gets compiled together and everyone is happy. (This means qmake will only emit one rule saying to run moc, but not another rule telling the compiler to compile moc's output.)

從 2. 您還可以假設(shè)在 .h 中使用 Q_OBJECT 定義類不需要任何特殊包含.

From 2. you can also also desume that defining classes with Q_OBJECT in a .h does not require any special inclusion.

這篇關(guān)于為什么包含“.moc"很重要?Qt 源代碼文件末尾的文件?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

How can I read and manipulate CSV file data in C++?(如何在 C++ 中讀取和操作 CSV 文件數(shù)據(jù)?)
In C++ why can#39;t I write a for() loop like this: for( int i = 1, double i2 = 0; (在 C++ 中,為什么我不能像這樣編寫 for() 循環(huán): for( int i = 1, double i2 = 0;)
How does OpenMP handle nested loops?(OpenMP 如何處理嵌套循環(huán)?)
Reusing thread in loop c++(在循環(huán) C++ 中重用線程)
Precise thread sleep needed. Max 1ms error(需要精確的線程睡眠.最大 1ms 誤差)
Is there ever a need for a quot;do {...} while ( )quot; loop?(是否需要“do {...} while ()?環(huán)形?)
主站蜘蛛池模板: 智能电表|预付费ic卡水电表|nb智能无线远传载波电表-福建百悦信息科技有限公司 | 对辊破碎机-液压双辊式,强力双齿辊,四辊破碎机价格_巩义市金联机械设备生产厂家 | 真丝围巾|真丝丝巾|羊绒围巾|围巾品牌|浙江越缇围巾厂家定制 | 找果网 | 苹果手机找回方法,苹果iPhone手机丢了找回,认准找果网! | 北京办公室装修,办公室设计,写字楼装修-北京金视觉装饰工程公司 北京成考网-北京成人高考网 | 成都软件开发_OA|ERP|CRM|管理系统定制开发_成都码邻蜀科技 | 不锈钢拉手厂家|浴室门拉手厂家|江门市蓬江区金志翔五金制品有限公司 | 工业插头-工业插头插座【厂家】-温州罗曼电气 | 防堵吹扫装置-防堵风压测量装置-电动操作显示器-兴洲仪器 | PVC地板|PVC塑胶地板|PVC地板厂家|地板胶|防静电地板-无锡腾方装饰材料有限公司-咨询热线:4008-798-128 | 郑州律师咨询-郑州律师事务所_河南锦盾律师事务所 | 网带通过式抛丸机,,网带式打砂机,吊钩式,抛丸机,中山抛丸机生产厂家,江门抛丸机,佛山吊钩式,东莞抛丸机,中山市泰达自动化设备有限公司 | 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | 上海恒驭仪器有限公司-实验室平板硫化机-小型平板硫化机-全自动平板硫化机 | 蔡司三坐标-影像测量机-3D扫描仪-蔡司显微镜-扫描电镜-工业CT-ZEISS授权代理商三本工业测量 | 上海洗地机-洗地机厂家-全自动洗地机-手推式洗地机-上海滢皓洗地机 | 面粉仓_储酒罐_不锈钢储酒罐厂家-泰安鑫佳机械制造有限公司 | ◆大型吹塑加工|吹塑加工|吹塑代加工|吹塑加工厂|吹塑设备|滚塑加工|滚塑代加工-莱力奇塑业有限公司 | B2B网站_B2B免费发布信息网站_B2B企业贸易平台 - 企资网 | 冷凝锅炉_燃气锅炉_工业燃气锅炉改造厂家-北京科诺锅炉 | 不锈钢闸阀_球阀_蝶阀_止回阀_调节阀_截止阀-可拉伐阀门(上海)有限公司 | 曙光腾达官网-天津脚手架租赁-木板架出租-移动门式脚手架租赁「免费搭设」 | 招商帮-一站式网络营销服务|搜索营销推广|信息流推广|短视视频营销推广|互联网整合营销|网络推广代运营|招商帮企业招商好帮手 | 视觉检测设备_自动化检测设备_CCD视觉检测机_外观缺陷检测-瑞智光电 | 乐考网-银行从业_基金从业资格考试_初级/中级会计报名时间_中级经济师 | 电线电缆厂家|沈阳电缆厂|电线厂|沈阳英联塑力线缆有限公司 | 偏心半球阀-电动偏心半球阀-调流调压阀-旋球阀-上欧阀门有限公司 | SMC-SMC电磁阀-日本SMC气缸-SMC气动元件展示网 | 行吊_电动单梁起重机_双梁起重机_合肥起重机_厂家_合肥市神雕起重机械有限公司 | 杭州顺源过滤机械有限公司官网-压滤机_板框压滤机_厢式隔膜压滤机厂家 | 污水处理设备维修_污水处理工程改造_机械格栅_过滤设备_气浮设备_刮吸泥机_污泥浓缩罐_污水处理设备_污水处理工程-北京龙泉新禹科技有限公司 | 有源电力滤波装置-电力有源滤波器-低压穿排电流互感器|安科瑞 | 东莞猎头公司_深圳猎头公司_广州猎头公司-广东万诚猎头提供企业中高端人才招聘服务 | 防爆电机生产厂家,YBK3电动机,YBX3系列防爆电机,YBX4节防爆电机--河南省南洋防爆电机有限公司 | 铝合金风口-玻璃钢轴流风机-玻璃钢屋顶风机-德州东润空调设备有限公司 | 家庭教育吧-在线家庭教育平台,专注青少年家庭教育 | 土壤水分自动监测站-SM150便携式土壤水分仪-铭奥仪器 | 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 | 壹车网 | 第一时间提供新车_资讯_报价_图片_排行! | 广州昊至泉水上乐园设备有限公司 | 好看的韩国漫画_韩漫在线免费阅读-汗汗漫画 |