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

什么時候應該使用 Q_OBJECT?

When should Q_OBJECT be used?(什么時候應該使用 Q_OBJECT?)
本文介紹了什么時候應該使用 Q_OBJECT?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

文檔指出:

Q_OBJECT 宏必須出現在類定義的私有部分聲明自己的信號和插槽或使用其他服務由 Qt 的元對象系統提供.

The Q_OBJECT macro must appear in the private section of a class definition that declares its own signals and slots or that uses other services provided by Qt's meta-object system.

但是正是這是什么意思?在哪些 QObject 派生類上我可以安全地省略它?如果在 QObject 派生類上省略 Q_OBJECT,然后從該類繼承,會出現問題嗎?基本上,我想了解更多有關何時可以從 Qt 類中省略它的信息.

But exactly what does that mean? On which QObject-derived classes can I safely omit it? Will problems arise if you omit Q_OBJECT on a QObject-derived class, and then inherit from that one? Basically I would like a little more information on when I can omit it from my Qt classes.

推薦答案

對于從 QObject 派生的任何非模板類,您應該使用 Q_OBJECT.

You should use the Q_OBJECT macro for any non-templated classes that derive from QObject.

除了信號和槽之外,Q_OBJECT 宏提供了與給定類相關聯的元對象信息.

Besides signals and slots, the Q_OBJECT macro provides the meta object information that is associated with given class.

如文檔中所述:

我們強烈建議QObject 的所有子類都使用 Q_OBJECT 宏,無論它們是否實際使用信號、槽和屬性.

we strongly recommend that all subclasses of QObject use the Q_OBJECT macro regardless of whether or not they actually use signals, slots, and properties.

假設我們有以下類:

class Class : public QObject {
public:
  Class() {}
};

如果沒有 Q_OBJECT,以下元對象系統功能(以及其他)將不適用于 Class:

Without Q_OBJECT, the following metaobject system features (among others) will not work for Class:

  1. qobject_cast() - 由于缺少元數據

QObject::tr() - 由于缺少元數據

slots 和 invokables 首先在 Class 中聲明,當按名稱調用或查找時 - QMetaObject 方法都不適用于這些方法,Qt 也不會4 connect - 由于缺少元數據

slots and invokables first declared in Class, when invoked or looked up by name - none of QMetaObject methods will work for these methods, neither will the Qt 4 connect - due to missing metadata

信號 - 因為 moc 不會生成它們的實現,代碼也不會編譯.

signals - since moc won't generate their implementations and the code won't compile.

當然,您可以省略它,但是如果您曾經使用過這些功能,則需要記住將宏放入類的聲明中.這是一種相當脆弱的做法,最好避免.節省的錢不值得.所以,不要等待 - 將 Q_OBJECT 宏添加到從 QObject 派生的每個類中,作為編碼策略的問題.

You can omit it, of course, but if you ever use these features, you'll need to remember to put the macro into the class's declaration. This is a rather brittle practice and best avoided. The savings are not worth it. So, don't wait - add the Q_OBJECT macro to every class that derives from QObject as a matter of coding policy.

Q_OBJECT 宏應該永遠用在不是從 QObject 派生的類上.要將可調用項和屬性添加到此類類,請改用 Q_GADGET 宏.

The Q_OBJECT macro should never be used on classes that don't derive from QObject. To add invokables and properties to such classes, use the Q_GADGET macro instead.

這篇關于什么時候應該使用 Q_OBJECT?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

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

相關文檔推薦

How can I read and manipulate CSV file data in C++?(如何在 C++ 中讀取和操作 CSV 文件數據?)
In C++ why can#39;t I write a for() loop like this: for( int i = 1, double i2 = 0; (在 C++ 中,為什么我不能像這樣編寫 for() 循環: for( int i = 1, double i2 = 0;)
How does OpenMP handle nested loops?(OpenMP 如何處理嵌套循環?)
Reusing thread in loop c++(在循環 C++ 中重用線程)
Precise thread sleep needed. Max 1ms error(需要精確的線程睡眠.最大 1ms 誤差)
Is there ever a need for a quot;do {...} while ( )quot; loop?(是否需要“do {...} while ()?環形?)
主站蜘蛛池模板: 冷却塔风机厂家_静音冷却塔风机_冷却塔电机维修更换维修-广东特菱节能空调设备有限公司 | 西安烟道厂家_排气道厂家_包立管厂家「陕西西安」推荐西安天宇烟道 | 重庆网站建设,重庆网站设计,重庆网站制作,重庆seo,重庆做网站,重庆seo,重庆公众号运营,重庆小程序开发 | 便携式XPDM露点仪-在线式防爆露点仪-增强型烟气分析仪-约克仪器 冰雕-冰雪世界-大型冰雕展制作公司-赛北冰雕官网 | 电动打包机_气动打包机_钢带捆扎机_废纸打包机_手动捆扎机 | 远程会诊系统-手术示教系统【林之硕】医院远程医疗平台 | IP检测-检测您的IP质量 | 石家庄装修设计_室内家装设计_别墅装饰装修公司-石家庄金舍装饰官网 | 四合院设计_四合院装修_四合院会所设计-四合院古建设计与建造中心1 | 北京公积金代办/租房发票/租房备案-北京金鼎源公积金提取服务中心 | 杭州用友|用友软件|用友财务软件|用友ERP系统--杭州协友软件官网 | 舞台木地板厂家_体育运动木地板_室内篮球馆木地板_实木运动地板厂家_欧氏篮球地板推荐 | 工控机-图像采集卡-PoE网卡-人工智能-工业主板-深圳朗锐智科 | 微量水分测定仪_厂家_卡尔费休微量水分测定仪-淄博库仑 | 聚丙烯酰胺PAM-聚合氯化铝PAC-絮凝剂-河南博旭环保科技有限公司 巨野电机维修-水泵维修-巨野县飞宇机电维修有限公司 | 实验室隔膜泵-无油防腐蚀隔膜泵-耐腐蚀隔膜真空泵-杭州景程仪器 电杆荷载挠度测试仪-电杆荷载位移-管桩测试仪-北京绿野创能机电设备有限公司 | 深圳宣传片制作-企业宣传视频制作-产品视频拍摄-产品动画制作-短视频拍摄制作公司 | 集装袋吨袋生产厂家-噸袋廠傢-塑料编织袋-纸塑复合袋-二手吨袋-太空袋-曹县建烨包装 | AGV无人叉车_激光叉车AGV_仓储AGV小车_AGV无人搬运车-南昌IKV机器人有限公司[官网] | 交流伺服电机|直流伺服|伺服驱动器|伺服电机-深圳市华科星电气有限公司 | EPK超声波测厚仪,德国EPK测厚仪维修-上海树信仪器仪表有限公司 | 不锈钢法兰-碳钢法兰-法兰盘生产加工厂家-[鼎捷峰]-不锈钢法兰-碳钢法兰-法兰盘生产加工厂家-[鼎捷峰] | 阴离子聚丙烯酰胺价格_PAM_高分子聚丙烯酰胺厂家-河南泰航净水材料有限公司 | 飞飞影视_热门电影在线观看_影视大全 | 商用绞肉机-熟肉切片机-冻肉切丁机-猪肉开条机 - 广州市正盈机械设备有限公司 | 屏蔽服(500kv-超高压-特高压-电磁)-徐吉电气 | 渣油泵,KCB齿轮泵,不锈钢齿轮泵,重油泵,煤焦油泵,泊头市泰邦泵阀制造有限公司 | 书法培训-高考书法艺考培训班-山东艺霖书法培训凭实力挺进央美 | 螺杆式冷水机-低温冷水机厂家-冷冻机-风冷式-水冷式冷水机-上海祝松机械有限公司 | 企典软件一站式企业管理平台,可私有、本地化部署!在线CRM客户关系管理系统|移动办公OA管理系统|HR人事管理系统|人力 | 英国雷迪地下管线探测仪-雷迪RD8100管线仪-多功能数字听漏仪-北京迪瑞进创科技有限公司 | 激光内雕_led玻璃_发光玻璃_内雕玻璃_导光玻璃-石家庄明晨三维科技有限公司 激光内雕-内雕玻璃-发光玻璃 | 单机除尘器 骨架-脉冲除尘器设备生产厂家-润天环保设备 | 中天寰创-内蒙古钢结构厂家|门式刚架|钢结构桁架|钢结构框架|包头钢结构煤棚 | 郑州外墙清洗_郑州玻璃幕墙清洗_郑州开荒保洁-河南三恒清洗服务有限公司 | 期货软件-专业期货分析软件下载-云智赢 | 手板_手板模型制作_cnc手板加工厂-东莞天泓 | 车件|铜件|车削件|车床加工|五金冲压件-PIN针,精密车件定制专业厂商【东莞品晔】 | 自动部分收集器,进口无油隔膜真空泵,SPME固相微萃取头-上海楚定分析仪器有限公司 | 预制直埋蒸汽保温管-直埋管道-聚氨酯发泡保温管厂家 - 唐山市吉祥保温工贸有限公司 | 液氮罐(生物液氮罐)百科-无锡爱思科|