这是命令 moc-qt5,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
moc - 生成 Qt 元对象支持代码
概要
莫克 [-o 文件] [-i] [-f] [-k] [-ldbg] [-nw] [-p 路径] [-q 路径] [-v] 文件
商品描述
此页面记录了 元 摆件 编译器 用于 Qt GUI 应用程序框架。 这 莫克
从 C++ 头文件或源文件中读取一个或多个 C++ 类声明并生成
一个包含类的元对象信息的 C++ 源文件。 C++ 源代码
生成的文件 莫克 必须编译并链接到类的实现
(或者它可以 #included 到类的源文件中)。
如果你使用 制作 要创建您的 Makefile,将包含调用 莫克
需要时,因此您无需使用 莫克 直。
简而言之,元对象系统是 Qt 使用的结构(参见 http://doc.trolltech.com)
用于组件编程和运行时类型信息。 它添加了属性和
向(某些)类继承信息,并在类之间提供一种新的通信类型
这些类的那些实例,信号槽连接。
配置
-o 文件
将输出写入 文件 而不是标准输出。
-f 强制在输出中生成 #include 语句。 这是默认的
对于名称与正则表达式 .[hH][^.]* 匹配的文件(即扩展名
以。。开始 H or h )。 这个选项只有在你有这样的头文件时才有用
不遵循标准命名约定。
-i 不要在输出中生成 #include 语句。 这可用于运行 莫克
在包含一个或多个类声明的 C++ 文件上。 然后你应该#include
.cpp 文件中的元对象代码(请参阅下面的用法)。 如果两者 -f 和 -i 旨在
目前,最后一位获胜。
-西北 不生成任何警告。 不建议。
-ldbg 将大量 lex 调试信息写入标准输出。
-p 径
使 莫克 前置 径/ 到生成的 #include 语句中的文件名(如果
生成一个)。
-q 径
使 莫克 前置 径/ 到生成的 qt #include 文件的文件名
码。
-v 显示版本 莫克 和 Qt。
你可以明确地告诉 莫克 不要解析头文件的一部分。 它可以识别任何 C++
包含子字符串 MOC_SKIP_BEGIN 或 MOC_SKIP_END 的注释 (//)。 他们像你一样工作
会期望,你可以有几个级别。 所看到的净结果 莫克 is
就像您删除了 MOC_SKIP_BEGIN 和 MOC_SKIP_END 之间的所有行
用法
莫克 几乎总是被调用 使(1),不用手。
莫克 通常与包含类声明的输入文件一起使用,如下所示:
类你的类:公共 QObject {
Q_OBJECT
Q_PROPERTY( ... )
Q_CLASSINFO( ... )
市民:
YourClass(QObject * parent=0, const char * name=0);
〜你的类();
信号:
公共插槽:
};
如果您只使用 GNU make,这是一个有用的 makefile 规则:
m%.cpp: %.h
moc $< -o $@
如果您想可移植地编写,您可以使用以下形式的单独规则:
mNAME.cpp:NAME.h
moc $< -o $@
你还必须记得添加 名称.cpp 到您的 SOURCES(替换您最喜欢的名字)
变量和 名称.o 到您的 OBJECTS 变量。
(虽然我们更喜欢将 C++ 源文件命名为 .cpp,但 莫克 不知道,所以你可以
如果您愿意,可以使用 .C、.cc、.CC、.cxx 甚至 .c++。)
如果您在 C++ 文件中有类声明,我们建议您使用 makefile 规则
喜欢这个:
NAME.o:mNAME.cpp
mNAME.cpp:NAME.cpp
moc -i $< -o $@
这保证了 使(1) 将运行 莫克 在编译之前 名称.cpp。 那你可以
放
#include "nNAME.cpp"
在......的最后 名称.cpp,该文件中声明的所有类都是完全已知的。
诊断
有时您可能会收到链接错误,说 YourClass::className() 未定义或
YourClass 缺少 vtbl。 当您忘记编译时,这些错误最常发生
moc 生成的 C++ 代码或在链接命令中包含该对象文件。
这个 莫克 会警告您一些危险或非法的构造。
使用 onworks.net 服务在线使用 moc-qt5