Qt-No relevant classes found. No output generated问题解决

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类,但是报该信息,解决方法有几个:
  1. 文件编码格式格式-->以UTF-8无BOM格式编码
  2. 重新运行qmake
  3. 这是我本地出现的问题。cpp的文件名和h不一致,具体导致moc失败的机制不是很清楚,不过解决方法就是改成一样的文件名。
相关推荐
两只程序猿25 分钟前
数据可视化 | Violin Plot小提琴图Python实现 数据分布密度可视化科研图表
开发语言·python·信息可视化
野生技术架构师1 小时前
1000 道 Java 架构师岗面试题
java·开发语言
湫兮之风1 小时前
C++: Lambda表达式详解(从入门到深入)
开发语言·c++
Porunarufu1 小时前
JAVA·顺序逻辑控制
java·开发语言
Sylvia-girl1 小时前
C语言中经常使用的函数
c语言·开发语言
~无忧花开~1 小时前
JavaScript学习笔记(十五):ES6模板字符串使用指南
开发语言·前端·javascript·vue.js·学习·es6·js
周杰伦fans1 小时前
C# 23种设计模式详解与示例
开发语言·设计模式·c#
CAE虚拟与现实2 小时前
PyQt和PySide中使用Qt Designer
开发语言·qt·pyqt·qt designer·pyside
Paul_09202 小时前
golang面经——channel模块
开发语言
赵谨言2 小时前
基于python数据挖据的教学监控系统的设计与应用
开发语言·经验分享·python