开发网站好还是app,代做课件ppt,ui网页设计培训学校,哈尔滨网络公司如何qt在编译时会使用moc#xff0c;即Meta-Object Compiler#xff0c;对任何继承于QObject的子类我们都应在类开头写上Q_OBJECT#xff0c;而moc做的一件事情便是将带有Q_OBJECT的类的cpp文件使用moc进行处理#xff0c;这是因为Q_OBJECT实际上声明了一些函数#xff0c;而m…qt在编译时会使用moc即Meta-Object Compiler对任何继承于QObject的子类我们都应在类开头写上Q_OBJECT而moc做的一件事情便是将带有Q_OBJECT的类的cpp文件使用moc进行处理这是因为Q_OBJECT实际上声明了一些函数而moc负责对其进行实现Qt信号槽的能力就依赖于moc处理生成的文件名称为moc_xxxx.cpp最终C编译器是将这些moc生成的文件再拿去编译的。 现在当我们收到No relevant classes found. No output generated这个信息时意味着moc拿到了一个cpp文件其中并没有任何Q_OBJECT标记即这是一个纯C的文件不依赖于Qt元对象系统因此不需要额外生成任何代码因此moc针对该cpp生成的moc_开头的文件将会是空的。这其实不是一个错误或者警告而是一个信息而已需要根据我们的具体情况解决
直接忽略该信息我们确实写了一个不需要Qt元对象系统的类此时我们应该把该类的源文件从moc处理的文件列表中去除我们明明写了一个Qt类但是报该信息解决方法有几个
文件编码格式格式–以UTF-8无BOM格式编码重新运行qmake这是我本地出现的问题。cpp的文件名和h不一致具体导致moc失败的机制不是很清楚不过解决方法就是改成一样的文件名。